unix下c的一个问题
while(1){
char ch;
printf( "server waiting\n ");//此处不加 "\n "就啥也不显示
client_len=sizeof(client_address);
client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);
read(client_sockfd,&ch,1);
ch++;
write(client_sockfd,&ch,1);
close(client_sockfd);
}
问题如line 3注释所述。以前也碰到过,不知道是怎么回事。只要加上\n就正常。望高人指点。
[解决办法]
应该不是不显示而是缓冲区并没有到该输出的时候吧?加了\n就相当于直接结束缓冲并输出——个人猜测。
[解决办法]
标准输出是带缓存的。
printf( "server waiting ");
fflush(stdout);
试试。
[解决办法]
我觉得(不确认)问题在:
字符编码问题,这源代码是不是LZ到那去copy过来地..就会有问题!
[解决办法]
不是1楼所说的。
不过很可能是 程序的执行流程根本就没有到while(1)这个地方。
如果执行到这里的话, 那就很可能是原作者手工设置的缓冲区了,可以看看不添加\n,改成其他字符, 如果有输出的话,那就正如我所说的。那你就该看看原作者是否使用了setbuf()函数
[解决办法]
標準輸出是行緩衝,一行結束才輸出
[解决办法]
ls说的对,
但是在使用printf的时候没有加\n 也应该是可以显示的阿