Почему второй оператор printf перекрывает первый на консоли linux - PullRequest
0 голосов
/ 16 июня 2020

Первый оператор printf печатает find, но второй перекрывает его. В чем проблема и как ее исправить?

void student(char *name, char *id)
{
  char nme[50];
  strcpy(nme,name);
  //printf("%s",nme);
  nme[strcspn(nme, "\n")] = '\0';
  printf("\n\nWelcome %s ",nme);
  setvbuf(stdout, NULL, _IONBF, 0);
  printf("Loading your Account");
  int i=0;
                while (i<3) {
                        sleep(1);
                        printf(".");
                        i++;
                }

1 Ответ

3 голосов
/ 16 июня 2020

Вероятно, name заканчивается на \r\n, потому что он был создан на Windows, а затем прочитан в подсистеме Linux или в режиме rb. Изменение "\n" в strcspn cal на "\r\n", вероятно, решит проблему.

Вы должны следить за окончанием строки Windows, если вы работаете в смешанной системе. В подобных случаях часто бывает полезно использовать такой инструмент, как hd, который печатает файлы как в шестнадцатеричном, так и в символьном формате.

...