简体   繁体   中英

counter getting reset in while loop in C

I am a newbie in programming and taking integer inputs in unsigned character array, using while loop. Somehow the counter is getting auto reset thus making while loop go infinitely.

int i;
unsigned char ab[7];
printf("Enter numbers : ");
i=0;
while(i<7)
{
    scanf(" %d",&ab[i]);
    fflush(stdin);
    i++;
    printf("\nvalue of i : %d",i);
}

By printing counter value, I got to know that counter is getting reset.

Can you suggest what is going wrong and why? And what I can do to make it right?

I am compiling it using gcc version details below.

Apple clang version 13.1.6 (clang-1316.0.21.2.5)
Target: x86_64-apple-darwin21.6.0
Thread model: posix

Thanks

With scanf() %d is for int*, but %hhu assumes unsigned char*.

I also cleaned up the printf() , and changed the fflush(stdin) to stdout as it makes no sense for stdin.

#include <stdio.h>

int main () {
        int i;
        unsigned char ab[7];
        printf("Enter numbers : ");
        i=0;
        while(i<7)
        {
                scanf("%hhu", &ab[i]);
                i++;
                printf("value of i : %d\n",i);
                fflush(stdout);
        }

}

This works:

% counter
Enter numbers : 1
value of i : 1
2
value of i : 2
3
value of i : 3
4
value of i : 4
5
value of i : 5
6
value of i : 6
7
value of i : 7
%

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM