Как прочитать первую строку с начальным пробелом в c? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь получить столько строк, сколько указано в c.
Но первая пробел, расположенный в первой строке, удален.

Я уже использовал fgets и scanset. Я хочу, чтобы вход и выход были одинаковыми.

fgets(str[i], 100, stdin);
scanf("%[^\n]%*c]", str);


Код

int n = 0;
scanf("%d\n", &n);

char str[10][100] = {0};
for (int i = 0; i < n; i++) {
    fgets(str[i], 100, stdin);
}

Вход

3
 **
*
 **

Вывод

**
*
 **

Что мне делать?

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Вы должны использовать getchar () после чтения n, потому что символ новой строки '\ n' останется во входном буфере, и ваши fgets в течение l oop прочтут это, а также удалят \n из scanf.

Используйте следующую строку кода:

    int n = 0;
    scanf("%d\n", &n);
    getchar();
    char str[10][100] = {0};
    for (int i = 0; i < n; i++) {
      fgets(str[i], 100, stdin);
    }
1 голос
/ 19 апреля 2020

удалите "\ n" из scanf и добавьте getchar() для захвата новой строки.

scanf("%d", &n);
getchar();
...