gpt4 book ai didi

c - 奇怪的运行时问题 : printf stops working midway

转载 作者:行者123 更新时间:2023-11-30 15:00:17 26 4
gpt4 key购买 nike

我正在写一个chat server program作为我的网络实验室的一部分,当我观察到一个非常奇怪的行为时:

        printf("Recieved login info.\n"); //works
printf("Username: %s\n", ui->username); //works
printf("Passward: %s\n", ui->password); //works

//TO_AUTHENTICATE, if failure, send appropriate reply
printf("makeitwork"); //does not work
while(ui != NULL)
{
printf("here2");//does not work
if(strcmp(ui->username, record.username) == 0 && strcmp(ui->password, record.password) == 0)
{
strcpy(userRecords[sockfd].username, record.username);
userRecords[sockfd].status = ONLINE;

printf("Successfully authenticated %s.\n", userRecords[sockfd].username);

// sendOnlineUsers(sockfd, registeredUsers);

return SUCCESS;
}
ui = ui->next;
}

在上面的代码段中,第一个、第二个和第三个printf语句可以工作,但从第四个开始就不起作用了。

但是如果我注释掉if声明printf("here2"); ,一切正常。

我使用gdb逐行执行程序:

(gdb) 
Recieved login info.
94 printf("Username: %s\n", ui->username);
(gdb)
Username: user-1
95 printf("Passward: %s\n", ui->password);
(gdb)
Passward: pass
98 printf("makeitwork");
(gdb)
99 while(ui != NULL)
(gdb)
101 printf("here2");
(gdb)
102 if(strcmp(ui->username, record.username) == 0i)//&& strcmp(ui->password, record.password) == 0)

printf 正在执行,但终端上没有输出。

发生了什么?

最佳答案

您需要刷新缓冲区

添加

fflush(stdout);

printf之后,末尾没有\n

关于c - 奇怪的运行时问题 : printf stops working midway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com