я писал chat server program как часть моей сети лаборатории, когда я наблюдал очень странное поведение:странный вопрос во время выполнения: PRINTF Перестал работать на полпути
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 работает, но с 4-го числа она не работает.
Но если я прокомментирую заявление 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 выполняется, но не выводится на терминал.
Что происходит?
Вы были правы. Я положил '/ n', и теперь он работает. Можете ли вы объяснить, что происходит, и я приму свой ответ. – daltonfury42
'Printf' помещает материал в буфер. '\ n' удаляет буфер и отправляет его на терминал. Либо отправьте новую строку, либо сбросьте буфер, как описано выше –