ввод символов / строк при отладке с использованием gdb - PullRequest
0 голосов
/ 15 мая 2018

Моя программа содержит входной код для символа, но во время отладки не учитывает его.

Он учитывает ввод для других типов данных (int, float и т. Д.)

Программа:

               #include<stdio.h>
               int main()
                 {
                    int n,i=0;
                    char c;                               
                    scanf("%d",&n);
                    int a[20];
                    while(1)
                        {
                           scanf("%c",&c);
                           if(c=='\n')
                           break;
                           else
                             {
                                if(c!=32)
                                a[i++]=c-48;
                             }

                        }
                   for(i=0;i<10;i++)
                   printf("%d ",a[i]);

                    return 0;
               }

экран отладки: enter image description here

1 Ответ

0 голосов
/ 15 мая 2018

Ваш scanf("%d",...) оставляет новый символ строки в буфере, который затем сразу же используется последующими scanf("%c",...).Чтобы преодолеть это, пусть только один scanf после scanf("%d",...) потребляет пробелы:

int main()
{
    int n,i=0;
    scanf("%d",&n);

    int a[20];
    char c=0;
    scanf(" %c",&c);  // Consume white spaces including new line character before the value for c.
    while(c!='\n' && i < 20)
    {
        if(c!=32) {
            a[i++]=c-'0';
        }
        scanf("%c",&c);
    }
    for(int x=0;x<i;x++)
        printf("%d ",a[x]);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...