C语言printf输出时,为什么当我把 格式串中的 \n 去掉之后无法输出了呢?

#include<stdio.h>
#include<time.h>
int main(){
int a;
int t;
for(a=0;;a++){
t=time(0);
printf("%d\n",a); //为什么当我把 \n 去掉之后, 无法输出了呢?

while(t==time(0));
}
}

printf并不会直接输出到屏幕,而是输出到缓冲区。
只有当有刷新缓冲区的时候才会输出到屏幕。
导致缓冲区刷新到情况有这些:1 强制刷新 fflush;2,放到缓冲区到内容中包含\n \r ;3,缓冲区已满;4,需要从缓冲区拿东西到时候,如执行scanf。
去掉那个\n之后缓冲区一直得不到刷新,会一直等到缓冲区满的时候才能输出,所以你会很长一段时间看不到输出,除非你有耐心等到缓冲区被塞满。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-10

去掉\n也可以 不过就是没换行了 

第2个回答  2012-08-10
怎么说吧,\N会把缓冲区的字符打印出来,你去掉\n,一直在死循环,腾不出CPU打印字符串出来
第3个回答  2012-08-10
\n 换行作用。
第4个回答  2012-08-10
关掉,再进去运行试试。c有时会出点毛病。
第5个回答  2012-08-10
这是个死循环!

C语言printf输出时,为什么当我把 格式串中的 \\n 去掉之后无法输出了呢...
printf并不会直接输出到屏幕,而是输出到缓冲区。只有当有刷新缓冲区的时候才会输出到屏幕。导致缓冲区刷新到情况有这些:1 强制刷新 fflush;2,放到缓冲区到内容中包含\\n \\r ;3,缓冲区已满;4,需要从缓冲区拿东西到时候,如执行scanf。去掉那个\\n之后缓冲区一直得不到刷新,会一直等到缓冲区满的...

C语言程序去掉字符串中所有空格失败 只能输出空格前部分
你好!!因为scanf 函数遇到空格就终止了,你换成 gets(a); 这个函数吧 完整的修改后的代码:include<stdio.h>#include<stdlib.h>int main(){char a[80],b[80]={0}; \/\/ 初始化一下变量int i,k=0;gets(a); \/\/ 函数换了getsfor(i=0;i<10;i++){if(a[i]!=' '){b[k] ...

scanf输入后printf为什么无法输出?
scanf中的格式字符串写错了,你写的那两个根本不是scanf的格式字符串,格式字符串告诉程序输入的内容,如果不写格式字符串,程序就无法从键盘得到值,有如下几种:d:有符号十进制整型:如 int ,short;c: 单个字符:如char ld:有符号十进制长整型,如long f:十进制浮点型,如float,double s:字符...

c语言中的'\\n'是什么意思?
在C语言中,'\\n' 是一个转义字符,用于表示换行。当程序中的输出函数,如 `printf`,遇到 '\\n' 时,会在输出流中插入一个换行符,导致当前行结束,并开始新的一行。这种转义字符在文本文件的读写、控制台输出以及多行文本的处理中非常重要。在C语言的 `printf` 函数中,写入 "\\n" 实际上是在...

C语言中变量类型改变导致输出结果错误
如果格式字符串中给出的占位符信息错误,那么就会导致printf对参数的处理错误,输出结果自然也就很有可能不正确。printf("%ld%f", m, n); 执行这条语句时,printf首先从格式字符串"%ld%f"中得知调用者除了格式字符串还传递了两个参数,第一个是long型,第二个是double型。在Windows中long占4字节而...

puts函数和printf在输出字符串的时候遇到'\\0'和'\\n'分别是怎么处理的...
两者几乎相同,但printf会换行,而puts不会。'\\0'意味着字符串到了最后,若手动加则无视'\\0'之后的字符。(没有'\\0'编译器会自动加在最后)每遇到一次'\\n'就换行一次。

c语言输出~~~
printf()函数是格式输出函数,打印输出的意思,"%格式\\n"里面包含两层意思,,“%格式”表示你输出变量的格式,比如你输出整形,那么就是%d,如果你写成%C那么就与你输出变量的类型就不匹配,就不对了,\\n是回车换行的意思,比如你输入两个变量printf“%d\\n,%d”那么第一变量就会显示子第一行,第二...

在调试C语言中关于SCANF中出现的问题
这个很简单,只需要把scanf("%d %d %d\\n", &a, &b, &c);内的\\n去掉就行.因为,在scanf函数原形内,已经默认回车即进行标准输入,又在输入数据格式后加\\n的话,机器默认一个回车,但是还在等待另一个回车,换句话说,机器只是呆板的执行输入,不会进行判断,确认第二个回车.所以不会输入数据....

c语言中,printf("%d\\n",a);中的双引号可以去掉吗?
printf()函数要求第一个参数是字符串,所以不可以直接去掉引号,如果借助字符数组,则可实现去掉引号的梦想:char *str="%d\\n";printf(str,a);

c语言中定义了整型数据但是输出的时候我把它调为浮点型,运行输出了不是...
printf("b=%f,a=%d\\n", (float)b, (int)a); 原因很简单,格式串中的 %f 要求对应的参数必须是浮点型,否则输出就不正确。你已经看到了,输出是 b=0.000000,不正确吧?整型数据调为浮点型必须使用 (float)b,而不是改一下格式串为 %f 就能做到的。

相似回答