printf中\n的重要作用

 今天在程序运行中发现了一个小bug,对我来说是个难以置信的东西

以下是程序出错的一部分

void FindInfo(STU *s[])
{
    int i;
    char *name;

    name = (char *)malloc(sizeof(char) * 32);

    printf("Please input the name you want to find:\n");

    scanf("%s", name);

    for(i = 0; i < person; i++)
    {
        if(strcmp(s[i]->name, name) == 0)
        {
            printf("  name  age  ");
			printf("%d  %s ", s[i]->name, s[i]->age);
			sleep(3);
            break;
        }
    }  
}

运行结果如下

找了好久原因都没找到,后因高人指点得以解惑。在此感谢冬冬大佬。

后来百度了一下\n的作用

printf是以"行"来做缓冲区来刷新stdout的,如果遇到\n会强制立即刷新.否则刷新可能会延迟.因为printf中没有包含\n,内核决定满一行再刷新,而此时程序由于调用accept或recvfrom这类会block的api函数,造成屏幕一直显示不出来,除非收到了tcp连接请求或数据包,系统才会重新决定是否刷新屏幕.

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: printf函数是C语言用于输出信息的函数,其基本用法为: printf("格式控制字符串", 输出项1, 输出项2, ...); 其,格式控制字符串用于指定输出的格式,可以包含普通字符和转换说明符,例如:%d表示输出整数,%f表示输出浮点数,%c表示输出字符,%s表示输出字符串等等。输出项则是需要输出的变量或常量的值。 举个例子,如果要输出一个整数变量x的值,可以使用如下代码: int x = 10; printf("x的值为:%d\n", x); 其,%d表示输出整数,\n表示换行。执行上述代码后,输出的结果为: x的值为:10 需要注意的是,输出项的个数要与格式控制字符串的转换说明符一一对应,否则会产生输出错误。同时,格式控制字符串也可以使用一些修饰符,如%10d表示输出宽度为10的整数,%-10d表示输出左对齐的宽度为10的整数,%.2f表示输出保留2位小数的浮点数等等。 ### 回答2: 在C语言printf函数是一个标准库函数,用于将数据打印输出到标准输出设备(通常是屏幕)。它的基本语法是: printf("格式字符串", 参数列表); 其,格式字符串用于定义输出的格式,可以包含普通文本和转换说明符。普通文本将直接输出,而转换说明符用于指定输出参数的类型和格式。 常见的转换说明符及其用法包括: - %d:按照有符号十进制整数格式输出整数。 - %f:按照浮点数格式输出实数。 - %s:按照字符串格式输出字符串。 - %c:按照字符格式输出字符。 - %x:按照十六进制格式输出整数。 除了转换说明符外,还可以使用一些格式修饰符来控制输出格式,例如: - %nd:将整数输出为至少n位宽度的有符号十进制数,不足的位数用空格填充。 - %.nf:将浮点数输出为小数点后精确到n位。 - %m.nf:将浮点数输出为至少m位宽度、小数点后精确到n位的格式。 除了输出参数外,printf函数还可以接受多个参数,用逗号隔开,这些参数将按照格式字符串的转换说明符的顺序输出。 例如,下面的代码将输出一个整数和一个字符串: int num = 123; char str[] = "Hello"; printf("%d, %s\n", num, str); 这条代码将在屏幕上输出: 123, Hello ### 回答3: printf是C语言的一个非常常用的函数,用于向终端输出信息。 printf的基本用法是将要输出的信息放在双引号内作为参数传给printf函数,然后函数会将其输出到屏幕上。例如,printf("Hello World!\n");就会输出Hello World!这句话,并在末尾换行。 在双引号内可以使用转义字符对输出进行格式化。例如,\n表示换行,\t表示制表符,\"表示输出双引号等。可以使用这些转义字符,在输出的信息添加特殊的格式效果。 printf函数还可以通过插入占位符的方式,将变量的值输出到终端。占位符是以%开头的字符,表示要输出的变量的类型。常用的占位符有%d(整数)、%f(浮点数)、%c(字符)和%s(字符串)等。例如,printf("我的年龄是%d岁。\n", age);这样就可以输出变量age的值。 除了输出信息,printf还可以进行格式控制。可以通过在占位符前加上一些控制标记来自定义输出的样式,例如%d表示输出整数,%.2f表示输出浮点数并保留两位小数。这样可以根据需要对输出的格式进行灵活调整。 总之,printf函数是C语言一个非常重要的输出函数,它可以用于输出各种类型的信息,并且能够进行格式控制,使输出的信息更加灵活、美观。使用printf函数,我们可以方便地将程序的运行结果输出到终端,便于调试和观察程序的执行情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值