问题标签 [c-standard-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1884 浏览

c - C语言中的newlib是什么?

维基百科说“Newlib 是一个用于嵌入式系统的 C 标准库实现”。好的,但是我在哪里可以找到它的最新佳能版本?即正确的真正完整版本。

此外,C 语言还有哪些其他库?你能给我他们的ISO编号吗?

我试图了解 C 语言存在哪些库类型/版本,因此我知道将来遇到它们时它们的含义。

我希望 C 标准库仅被称为 C 标准库,但并未使用,而且这些不同的名称(如 newlib)似乎不太容易破译。

0 投票
2 回答
2096 浏览

c - 根据 C 标准,什么是字符串重叠?

来自 C 标准:

7.21.2.4 strncpy 函数

如果复制发生在重叠的对象之间,则行为未定义。


什么是重叠?

很明显,当目标字符串的开头与源字符串的结尾交叉时,它是重叠的。

但是在下一个示例中是否发生了重叠?

输出:20170125

如果 strncpy 只是像在这个实现中那样逐个字符地复制符号,应该没有问题。

0 投票
1 回答
36 浏览

c - 键盘输入使功能无法正常工作 - C

我有以下代码:

浏览器.h

主程序

第一个main函数完美无缺,它完成了它必须做的所有事情,但第二个main函数不能正常工作(即我添加了一些 url,它似乎工作正常,但是当我尝试 list_history 时没有出现)

我找不到第二个main不起作用的原因。如果您能提供帮助,我将不胜感激

示例执行:

0 投票
1 回答
852 浏览

c - GCC 致命错误:quit.h 没有这样的文件或目录

我正在为操作系统课程学习 C,并且刚刚按照教科书的说明编写了这个程序:

此代码完全从教科书中复制,但quit.h 似乎导致编译文件。我曾尝试将“quit.h”切换为“退出”和“退出”,但这些都不起作用,而且我找不到关于这个特定问题的其他问题。

0 投票
6 回答
1848 浏览

c - 如何确定 C 标准库函数中是否需要释放返回字符指针?

我在C程序开发方面经验很少。正如我在标题中所描述的,如何确定 C 标准库函数中是否需要释放返回字符指针?例如,我是否需要在 string.h 中释放函数的getenv返回指针stdlib.hstrstr我在文档中找不到任何描述。

提前致谢。

0 投票
6 回答
1603 浏览

c - 是否总是不建议读取未初始化的内存空间?

我正在重新创建整个标准 C 库,并且正在为strlen 开发一个实现,我希望它成为我所有其他str函数的基础。

我目前的实现如下:

我的问题是,当我通过一个赞时str

正如预期的那样,内存读取:

如果您查看我的实现,您可以预期我会得到 6 的回报——而不是 3(我以前的方法),这样我就可以检查是否strlen可能包括额外分配的内存。

这里要注意的是,我必须在初始化内存之外读取 1 个字节才能使最后一个循环条件在最终空终止符处失败——这是我想要的行为。然而,这通常被认为是不好的做法,并且有些自动错误。

即使您非常特别地打算读入垃圾值(以确保它不包含'\ 0'),在初始化值之外读取是否是一个坏主意?

如果是这样,为什么?

我明白那个:

不过,如果我只是想确保我已经达到了初始化值的结尾,我还是看不到问题......

另外,我意识到这个问题是可以避免的——我已经回避了一个设置为 1 的值,然后只读取初始化值——这不是重点,这更多是关于 C、运行时行为和最佳实践的基本问题;)

[编辑:]

对上一篇文章的评论:

好的。很公平 - 但关于“在初始化值后读取是否总是一个坏主意(故意操纵或运行时稳定性的危险)”这个问题 - 你有答案吗?请阅读已接受的答案,以了解问题性质的示例。我真的不需要修复这段代码,也不需要更好地理解数据类型、POSIX 规范或通用标准。我的问题与为什么可能存在这样的标准有关 - 为什么永远不要读取过去的初始化内存(如果存在这样的原因)可能很重要?在 GENERAL 中读取过去的初始化值的潜在后果是什么?

请大家 - 我试图更好地了解系统如何运作的各个方面,我有一个非常具体的问题。

0 投票
2 回答
715 浏览

c - 将 C 标准库中的 C 函数定义为宏

我一直在阅读 C 标头上的 The Open Group Base Specifications 和 Posix Programmers 手册页,这句话反复出现“以下内容应声明为函数,也可以定义为宏”,我不确定这意味着什么。从声明的函数中创建宏有什么意义。这不会造成命名空间冲突吗?另外,您为什么还要这样做?

0 投票
2 回答
10333 浏览

visual-c++ - “getenv ...函数...可能不安全”-真的吗?

我正在使用 MSVC 编译一些使用标准库函数的 C 代码,例如和其他函数getenv(),并设置为警告。MSVC 告诉我:sprintf/W3

'getenv':这个函数或变量可能不安全。考虑改用 _dupenv_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS

问题:

  • 为什么这在理论上是不安全的——而不是在其他平台上使用?
  • 实际上在 Windows 上不安全吗?
  • 假设我不是在编写面向安全的代码——我应该禁用这个警告还是开始给一堆标准库函数起别名?
0 投票
1 回答
1768 浏览

c - 使用 write 在文件中写入 int 变量

我目前正在尝试使用文件中的 write 函数编写一个整数变量。这是我的代码:

它会创建文件,但是当我尝试打开它时,它显示“无法显示”。当我用 data.txt 替换文件名时,它可以工作,但在文件中显示奇怪的字符。我还尝试使用 sprintf() 将 Integer 变量转换为 String ,这是同样的问题。

0 投票
0 回答
96 浏览

c - uClibc 是否仅用于基于 Linux 的操作系统?

uClibc(或 uClibc-ng)被称为嵌入式 Linux 系统的 C 库。该文档到处都引用了 Linux,并说该库针对 Linux 进行了非常仔细的优化。

虽然该库是专门开发用于 Linux 的,但它对其他系统也有用吗?将库与其他操作系统一起使用时是否需要了解任何限制?