272得票17回答
逐行读取C语言文件

我编写了这个函数来从文件中读取一行:const char *readLine(FILE *file) { if (file == NULL) { printf("Error: file pointer is null."); exit(1); ...

196得票7回答
如何链接到特定的glibc版本?

当我在我的Ubuntu Lucid 10.04 PC上编译某些代码时,它将与glibc链接。Lucid使用的是glibc的2.11版本。当我在另一台安装了较旧glibc的PC上运行此二进制文件时,命令失败并显示找不到glibc 2.11... 据我所知,glibc使用符号版本控制。我能否强...

163得票8回答
C语言中的stdlib和彩色输出

我正在制作一个简单的应用程序,需要彩色输出。如何使我的输出像emacs和bash一样上色? 由于我的应用程序只针对UNIX系统,因此我不关心Windows。

118得票6回答
硬浮点数和软浮点数有什么区别?

当我使用交叉工具链编译C代码时,链接器会输出大量警告,指出我的可执行文件使用了硬浮点数,但我的libc使用软浮点数。它们之间有什么区别吗?

116得票4回答
这些类型,比如uint32、int32、uint64和int64,在任何stdlib头文件中定义了吗?

我经常看到源代码使用像uint32、uint64这样的类型,我想知道它们是否应该由程序员在应用程序代码中定义,还是它们是在标准库头文件中定义的。 在我的应用程序源代码中使用这些类型的最佳方法是什么?

112得票7回答
fread/fwrite为什么需要将size和count作为参数?

我们在工作中讨论了为什么fread()和fwrite()需要按成员大小和数量读取/写入,并返回读取/写入的成员数,而不是只需一个缓冲区和大小。我们能想到唯一的用途是,如果您想要读取/写入一个数组,其中的结构体并非平台对齐方式刚好整除,因此已经填充,但这种情况不能如此常见以至于需要这种设计选择。...

111得票5回答
snprintf()函数总是以空字符结尾吗?

snprintf是否总是以空字符结尾目标缓冲区? 换句话说,这个是否足够:char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); 或者你必须这样做,如果somestr足够长?char dst[10]; somestr[...

83得票4回答
使用旧版libc进行链接,以提供更广泛的应用程序覆盖范围

Linux二进制文件通常动态链接到核心系统库(libc)。这样可以使二进制文件的内存占用很小,但是依赖于最新库的二进制文件将无法在旧系统上运行。相反,链接到旧库的二进制文件将在最新系统上正常运行。 因此,为了确保我们的应用程序在分发过程中具有良好的覆盖率,我们需要确定我们可以支持的最老版本的...

83得票2回答
不使用libc进行编译

我想在没有(g)libc的情况下编译我的C代码。 我怎样才能停用它,哪些函数依赖于它? 我尝试了-nostdlib,但是它没有帮助:代码可以编译和运行,但我仍然可以在可执行文件的十六进制转储中找到libc的名称。

82得票6回答
为什么stdlib.h中没有strtoi函数?

我已经习惯使用 strtod 和其变种。 我在想为什么 <stdlib.h> 没有提供 strtoi? 为什么整数类型被排除在这个函数族之外呢? 具体地,我想问为什么没有一个带有 strtod 的安全特性的 atoi 版本?