C programming--why gets() not taking input?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
C编程:
我在这里使用了2个gets()函数。第二个工作,但第一个不工作。为什么??如何使其工作?
N.B:我想将" sl"和" phn"变量作为char类型,并且我想使用gets()进行输入。
请有人帮忙....
将fgets用于所有输入。 scanf通常在输入流中留下换行符,这将导致fgets问题。使用sscanf解析输入的整数,并检查返回值以确保输入了整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h> int main() { int choice; int result = 0; char sl[10]; char phn[10]; char input[256]; do { printf("Enter choice:"); if ( ( fgets ( input, sizeof input, stdin))) { result = sscanf( input,"%d", &choice); if ( result == 0) { printf ("try again\ "); } } else { fprintf ( stderr,"problem getting input\ "); return 1; } } while ( result != 1); switch(choice) { case 1: printf("\ Enter Student Details: \ \ "); printf("\ Enter serial number:"); if ( ( fgets ( sl, sizeof sl, stdin)) == NULL) { fprintf ( stderr,"problem getting serial number\ "); return 1; } printf("Roll number:"); if ( ( fgets ( phn, sizeof phn, stdin)) == NULL) { fprintf ( stderr,"problem getting roll number\ "); return 1; } break; default: break; } return 0; } |
请勿使用
最重要的区别是
是,
使用
在其中使用