2017-02-13 14 views
0

я писал 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-го числа она не работает.

Но если я прокомментирую заявление ifprintf("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 выполняется, но не выводится на терминал.

Что происходит?

ответ

1

Вы должны очистить буфер

Добавить

fflush(stdout); 

после printf, где у вас нет \n в конце

+0

Вы были правы. Я положил '/ n', и теперь он работает. Можете ли вы объяснить, что происходит, и я приму свой ответ. – daltonfury42

+0

'Printf' помещает материал в буфер. '\ n' удаляет буфер и отправляет его на терминал. Либо отправьте новую строку, либо сбросьте буфер, как описано выше –

 Смежные вопросы

  • Нет связанных вопросов^_^