Gcc编译器不能扫描字符并从循环中出来终止程序
//mvt的代码。在此情况下,编译器不会扫描ch。ch用作循环的条件。它的初始值是“y”,如果它变为“n”,循环将中断。在此代码中,我询问用户是否要继续,然后按y或n。但不知道为什么gcc不等待扫描它。这是一个简单的代码,但我不能得到的错误Gcc编译器不能扫描字符并从循环中出来终止程序,c,gcc,C,Gcc,//mvt的代码。在此情况下,编译器不会扫描ch。ch用作循环的条件。它的初始值是“y”,如果它变为“n”,循环将中断。在此代码中,我询问用户是否要继续,然后按y或n。但不知道为什么gcc不等待扫描它。这是一个简单的代码,但我不能得到的错误 int main(){ char ch; temp=tm; ch='y'; for(i=0;ch=='y';i++){ printf("enter memory size for process %d",i+1
int main(){
char ch;
temp=tm;
ch='y';
for(i=0;ch=='y';i++){
printf("enter memory size for process %d",i+1);
scanf("%d",&m);
if(m<temp)
{printf("memory allocated\n"); ms[n]=m; n++;
temp-=ms[i];
}
else
{printf("memory not allocated\n"); }
https://stackoverflow.com/users/10404087/rishabh-sharma
printf("do you want to continue");
scanf("%c",&ch);
}
printf("total memory : %d\n",tm);
printf("process \t occupied \n");
for(i=0;i<n;i++)
printf("%7d \t %8d \n",i+1,ms[i]);
printf("total externel fregment : %d \n",temp);
return 0;
}
intmain(){
char ch;
温度=tm;
"y",;
for(i=0;ch='y';i++){
printf(“输入进程%d的内存大小”,i+1);
scanf(“%d”、&m);
如果(m您必须使用flushall()
函数清除与输入流关联的所有缓冲区,并写入与输出流关联的任何缓冲区
添加:flushall()
不是C,而是特定于供应商的扩展
或
另一种选择是在%c
范例
char ch;
scanf(" %c", &ch);
你可以将代码粘贴为问题中的文本,而不是图像。使用调试器。由scanf
读取到ch
的内容是什么?然后你可以查找请不要发布代码的图片,只将代码作为文本发布。对于所有读者来说,草率的演示都是不礼貌的。我会阅读流的所有char
s,直到EO检测到F
。@alk但我认为这是额外的开销。在这种情况下,我们知道遇到的只是回车符,所以我们必须通过缓冲区直到EOF
,因为这会增加时间复杂度。@alk:你是指EOF还是EOL(行尾)?我建议EOL比EOF更有帮助,尽管EOF不一定是错误的。