使用Lubuntu + gcc 4.9.2
问题(Question):
目前在练习file input/output
有个疑问是如何不要让前面输入的Enter影响到后面
看了一下自己手上的书“边学边做C语言”是用fflush(stdin)
不过我加进去以后根本没反应,输入完要求的char+Enter程式就直接跑到底
然后看了版友的建议用while(getchar()!='\n');
(不过我不太懂,这边最后一个getchar()不是输入完要求的char打的'\n'吗?)
可是的确有用,程式的确停下来叫我输入string
稍微看了一下好像有些大大说不能用fflush(stdin)
可是google一下发现很多人都在用
我自己对fflush的认识也是把之前输入到buffer里的清掉
还是我对fflush的认识有误?
感谢各位协助。
程式同步分享在此:
https://gist.github.com/gnitnaw/ac3dbcd8fa8e11c515c8
#include <stdio.h>
#define MAXSIZE 256
void read_string(char* p); //可以用scanf或fgets替代,我两个都不满意所以自己写
int main(void) {
char c, s[MAXSIZE];
puts("I/O lib");
puts("");
printf("Please give me a char: ");
c = getchar();
printf("What you keyin is %c\n", c);
fflush(stdin);
while(getchar()!='\n');
printf("Please give me a string : ");
read_string(s);
printf("What you keyin is %s\n", s);
printf("\n Press <Enter> to continue...");
while ((c=getchar()) != '\n');
return 0;
}
void read_string(char* p) {
int i;
char c;
for (i=0; i<MAXSIZE-1; ++i) {
if ( (c=getchar()) != '\n' ) {
p[i] = c;
} else {
break;
}
}
p[i] = '\0';
}