while循环中的scanf()问题
我是C语言的新手,我正在尝试编写一个简单的聊天室代码,但在使用scanf()函数时遇到了问题。以下是相关代码:while循环中的scanf()问题,c,scanf,C,Scanf,我是C语言的新手,我正在尝试编写一个简单的聊天室代码,但在使用scanf()函数时遇到了问题。以下是相关代码: while(1) { printf("2"); //Now sending message to server bzero(buffer, 256); printf("3"); scanf("%255s", buffer); printf("3"); n = write(sockfd, buffer, strlen(buf
while(1)
{
printf("2");
//Now sending message to server
bzero(buffer, 256);
printf("3");
scanf("%255s", buffer);
printf("3");
n = write(sockfd, buffer, strlen(buffer));
if (n < 0)
{
perror("Error writing to socket");
exit(1);
}
printf("3");
//Print server response
bzero(buffer, 256);
n = read(sockfd, buffer, 255);
if (n < 0)
{
perror("Error reading from socket");
exit(1);
}
printf("4");
printf("I got sent %s\n", buffer);
}
return 0;
while(1)
{
printf(“2”);
//现在正在向服务器发送消息
b0(缓冲器,256);
printf(“3”);
扫描频率(“%255s”,缓冲器);
printf(“3”);
n=写入(sockfd,buffer,strlen(buffer));
if(n<0)
{
perror(“写入套接字时出错”);
出口(1);
}
printf(“3”);
//打印服务器响应
b0(缓冲器,256);
n=读取(sockfd,缓冲区,255);
if(n<0)
{
perror(“从套接字读取错误”);
出口(1);
}
printf(“4”);
printf(“我已发送%s\n”,缓冲区);
}
返回0;
第一次通过它将消息发送到服务器并接收回消息。但是,第二次它挂起在scanf语句上,就好像scanf语句在收到换行符时不会停止读取一样。非常感谢您的帮助,谢谢 您确定它挂在
scanf
上了吗?如果使用printf(“3\n”)
而不是printf(“3”)
,会怎么样?你看到3
了吗?如果使用printf
作为调试跟踪,则需要刷新每个printf
上的输出。用\n
终止每个printf
字符串可以帮到你。非常感谢!我刚刚在每个printf语句的末尾添加了\n,现在我看到它挂起在从服务器读取的部分。作为一种旁白,请不要使用scanf
。它本质上是不安全的,已经被弃用了。改用fgets
。@EdS.谁说的scanf
不受欢迎