在C linux中使用char或string输入时,我总觉得很多问题。看看这个编程。它不接受用户的输入。请帮忙。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char *buf;
int msglen;
printf("\nEnter message length\t");
scanf("%d",&msglen);
buf=malloc(msglen);
//memset(buf,'\0',msglen+1);
printf("\nEnter data\t");
fflush(stdin);
fgets(buf,msglen,stdin); //NOT WORKING
fputs(buf,stdout);
return 0;
}
谢谢:)
答案 0 :(得分:2)
fflush()
用于刷新output streams
,但不清除stdin
中剩余的字符。首先使用gets()
或getchar()
从EOF
移除stdin
答案 1 :(得分:1)
使用getchar()
代替fflush()
,它有效。
答案 2 :(得分:1)
当您使用scanf("%d"....)
读取整数时,它不会从输入流中删除换行符。因此,当您稍后致电fgets
时,它会读取并找到换行符,即您读取一个空行。
要阅读下一行,您需要使用该换行符,例如: {/ 1}}正如别人建议的那样。
当您将格式化的I / O(getchar()
)与未格式化的I / O混合时,这种问题很常见。