while循环中的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

我是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(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
不受欢迎