#include <stdio.h>
#define length 50

int main()
{
        int i=0,finish=0;
        char A[length];
        char B[3];

        printf("Input A --> ? ");
        scanf("%s",A);
        printf("Input B --> ? ");
        scanf("%s",B);

        printf("Output A --> %s (It reads first char as \'\\0\')\n",A);
        printf("Output B --> %s\n",B);

        printf("Output A --> ");
        while(finish!=1)
        {
                if((i>1)&&(A[i]=='\0')) finish=1;
                printf("%c",A[i],i);
                i++;
        }
        printf(" (This is the proof!)\n");
}

hi,

i am new in C language. i tried to find what is wrong the code above.

The code runs correctly when i compiled it with gcc-3.x and 2.9x, but it does
not run when i compiled it using gcc-4.1.1 (linux debian 4.0 etch).

you could see when you input something for A and B. It reads B correctly. For
A, it reads first character as '\0'.

I find a solution to fix it from the code.
in the code:
-----------------
        char A[length];
        char B[3];
-------------------
if i change it as in below:
        char B[3];
        char A[length];
scanf runs correctly.

I am not sure it is a bug. But I thought it might be.


-- 
           Summary: scanf does not read correctly
           Product: gcc
           Version: 4.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mkarakoc at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36229

Reply via email to