标签: c

printf()和puts()在C中有什么区别?

我知道你可以用printf()和打印puts().我还可以看到,printf()允许您插入变量并进行格式化.

是否puts()仅仅是一种原始的版本printf().是否应该在printf()没有字符串插值的情况下使用它?

c printf

165
推荐指数
8
解决办法
17万
查看次数

C逐行读取文件

我写了这个函数来从文件中读取一行:

const char *readLine(FILE *file) {

    if (file == NULL) {
        printf("Error: file pointer is null.");
        exit(1);
    }

    int maximumLineLength = 128;
    char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength);

    if (lineBuffer == NULL) {
        printf("Error allocating memory for line buffer.");
        exit(1);
    }

    char ch = getc(file);
    int count = 0;

    while ((ch != '\n') && (ch != EOF)) {
        if (count == maximumLineLength) {
            maximumLineLength += 128;
            lineBuffer = realloc(lineBuffer, maximumLineLength);
            if (lineBuffer == NULL) {
                printf("Error reallocating space for …
Run Code Online (Sandbox Code Playgroud)

c file-io std line

165
推荐指数
7
解决办法
73万
查看次数

printf()格式为十六进制

这是一个奇怪的查询而不是一个重要的问题,但为什么当将十六进制打印为带有前导零的8位数字时,为什么这%#08X不显示相同的结果0x%08X

当我尝试使用前者时,08格式化标志被删除,并且它不能正常使用8.

我只是好奇.

c printf hex

165
推荐指数
4
解决办法
52万
查看次数

指向指针的指针如何在C中工作?

如何指针指针在C中工作?你什么时候使用它们?

c

164
推荐指数
11
解决办法
12万
查看次数

如何将文件指针(FILE*fp)转换为文件描述符(int fd)?

我有一个FILE *,通过电话回来fopen().我需要从中获取文件描述符,以便进行调用fsync(fd).从文件指针获取文件描述符的功能是什么?

c unix linux posix file

164
推荐指数
2
解决办法
10万
查看次数

在C中创建自己的头文件

任何人都可以通过一个简单的例子从头到尾解释如何在C中创建头文件.

c header include-guards include c-header

164
推荐指数
4
解决办法
31万
查看次数

在C中,为什么有些人在释放之前会抛出指针?

我正在研究一个旧的代码库,几乎每次调用free()都会在其参数上使用强制转换.例如,

free((float *)velocity);
free((float *)acceleration);
free((char *)label);
Run Code Online (Sandbox Code Playgroud)

其中每个指针都是相应的(和匹配的)类型.我完全没有理由这样做.这是非常古老的代码,所以我想知道它是否是K&R的东西.如果是这样,我实际上希望支持可能需要这个的旧编译器,所以我不想删除它们.

使用这些演员阵容有技术原因吗?我甚至没有看到使用它们的实用理由.在释放数据类型之前提醒自己有什么意义?

编辑:这个问题不是另一个问题的重复.另一个问题是这个问题的一个特例,如果亲密的选民能够阅读所有的答案,我认为这是显而易见的.

Colophon:我给出了"常量答案"的核对标记,因为这可能是为什么需要这样做的真正原因; 然而,关于它是一个ANSI C之前的习惯(至少在一些程序员中)的答案似乎是它在我的情况下使用的原因.很多人在这里有很多好处.感谢您的贡献.

c pointers casting

164
推荐指数
6
解决办法
1万
查看次数

C中的正则表达式:例子?

我正在经历一些简单的例子和​​如何在ANSI C man regex.h中使用正则表达式的最佳实践并没有提供那么多的帮助.

c regex

163
推荐指数
5
解决办法
30万
查看次数

errno线程安全吗?

errno.h,这个变量被声明为extern int errno;我的问题是,errno在一些调用之后检查值是否安全或在多线程代码中使用perror()是否安全.这是一个线程安全变量吗?如果没有,那么替代方案是什么?

我在x86架构上使用linux和gcc.

c linux multithreading gcc

163
推荐指数
8
解决办法
4万
查看次数

为什么最小的int,-2147483648,类型为'long'?

对于学校项目,我要编写C函数printf.事情进展顺利,但有一个问题我找不到合适的答案,所以我在这里.

printf("PRINTF(d) \t: %d\n", -2147483648);
Run Code Online (Sandbox Code Playgroud)

告诉我(gcc -Werror -Wextra -Wall):

   error: format specifies type 'int' but the argument has type 'long'
      [-Werror,-Wformat]
        printf("PRINTF(d) \t: %d\n", -2147483648);
                              ~~     ^~~~~~~~~~~
                              %ld
Run Code Online (Sandbox Code Playgroud)

但是如果我使用int变量,一切都很顺利:

int i;

i = -2147483648;
printf("%d", i);
Run Code Online (Sandbox Code Playgroud)

为什么?

编辑:

我理解了许多观点,他们非常有趣.无论如何,我猜printf是使用<stdarg.h>librairy,所以,va_arg(va_list ap, type)也应该返回正确的类型.对于%d%i,显然返回的类型是int.它有什么改变吗?

c types

163
推荐指数
2
解决办法
9550
查看次数

标签 统计

c ×10

linux ×2

printf ×2

c-header ×1

casting ×1

file ×1

file-io ×1

gcc ×1

header ×1

hex ×1

include ×1

include-guards ×1

line ×1

multithreading ×1

pointers ×1

posix ×1

regex ×1

std ×1

types ×1

unix ×1