char buf[1024] = {0};
// send a message
if(status == 0) {
while(1) {
printf("Enter message : ");
scanf("%1023[^\n]", buf);
fflush(stdin);
if(strcmp(buf,"quit")==0)
break;
status = write(s, buf, strlen(buf));
fflush(stdout);
memset(buf,0,sizeof buf);
}
}
对于我的 scanf,我想输入空格。但是,如果我运行这部分代码,“输入消息:”将处于无限循环中。
如果我将 scanf 更改为“%s”,则它可以正常工作,但我无法接受中间有空格的输入。
任何人都可以帮助发现它为什么会引发无限循环或有任何想法来解决这个问题吗?
scanf()
只是有太多的方法会导致阅读错误line. Use fgets()
char buf[1024] = {0};
// send a message
if(status == 0) {
while(1) {
printf("Enter message : ");
if (fgets(buf, sizeof buf, stdin) == NULL) break;
//scanf("%1023[^\n]", buf);
//fflush(stdin);
buf[strcspn(buf, "\n")] = '\0'; // lop off potential \n
if(strcmp(buf,"quit")==0)
break;
status = write(s, buf, strlen(buf));
// fflush(stdout);
memset(buf,0,sizeof buf);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)