簡體   English   中英

使用gdb調試時輸入的字符/字符串

[英]character/string input while debugging using gdb

我的程序包含用於character的輸入代碼,但是在調試過程中未考慮它。

它考慮其他數據類型(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;
               }

調試屏幕: 在此處輸入圖片說明

您的scanf("%d",...)在緩沖區中保留了一個新行字符,隨后該行字符立即被后續的scanf("%c",...) 為了克服這個問題,在scanf("%d",...)消耗空格后,只允許一個scanf

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM