C 如何使用EOF停止程序代码
我已经完成了程序的输入和处理部分,但我不知道如何用EOF终止程序。这是我的int mainvoid代码:C 如何使用EOF停止程序代码,c,eof,C,Eof,我已经完成了程序的输入和处理部分,但我不知道如何用EOF终止程序。这是我的int mainvoid代码: int main(void) { int size; int n; char preorder[26]; char inorder[26]; while(/* I don't know what to put on this part...*/) { for(n = 0; n < maxSize; n++)
int main(void)
{
int size;
int n;
char preorder[26];
char inorder[26];
while(/* I don't know what to put on this part...*/)
{
for(n = 0; n < maxSize; n++)
{
preorder[n] = ' ';
inorder[n] = ' ';
}
preIndex = 0;
scanf("%s %s", preorder, inorder);
size = strlen(preorder);
struct node *root = constructTree(inorder, preorder, 0, (size - 1));
printPostorder(root);
printf("\n");
}
return 0;
}
每个函数都工作正常,我分别检查了它们。基本上,用户希望通过按Ctrl+Z结束这个程序。我正在windows上工作,所以是Z。我必须使用EOF。Thx预先检查输入函数的返回值。scanf将返回存储的项目数,如果遇到文件结尾,则返回EOF 正如Anthon所说,您可以使用while1作为循环控制,并使用break;退出循环
while(1) {
if (scanf(...) == EOF)
break;
}
不要试图使用名为feof的函数,因为它只检查文件结构中的一个标志,也就是说,只有在您尝试读取它之后,它才会检测到EOF。不过,它可以在多层错误处理结构中使用
while(1) {
if (scanf(...) < N_elements_specified) {
if (feof(...)) {
/* EOF detected */
break;
} else {
/* some other cause of insufficient data */
}
}
}
检查输入函数的返回值。scanf将返回存储的项目数,如果遇到文件结尾,则返回EOF 正如Anthon所说,您可以使用while1作为循环控制,并使用break;退出循环
while(1) {
if (scanf(...) == EOF)
break;
}
不要试图使用名为feof的函数,因为它只检查文件结构中的一个标志,也就是说,只有在您尝试读取它之后,它才会检测到EOF。不过,它可以在多层错误处理结构中使用
while(1) {
if (scanf(...) < N_elements_specified) {
if (feof(...)) {
/* EOF detected */
break;
} else {
/* some other cause of insufficient data */
}
}
}
您希望执行以下操作:
while (scanf(...) != EOF) {
}
您希望执行以下操作:
while (scanf(...) != EOF) {
}
您可以添加cin并从preorder获取输入,而preorder还剩下字符:
while (cin >> preorder)
{
...
}
您可以添加cin并从preorder获取输入,而preorder还剩下字符:
while (cin >> preorder)
{
...
}
查看在while之后放置任何真值,例如while1,如果用户点击Ctrl-Z,您希望显式中断。值得注意的是,在Windows控制台上,EOF是用Ctrl+Z发送的,但在Linux中是Ctrl+D。查看在while之后放置任何真值,例如while1,如果用户点击Ctrl-Z,您希望显式中断。值得注意的是,在Windows控制台上,EOF是用Ctrl+Z发送的,但在Linux中是Ctrl+D。您通常在。。。对于scanf…==EOF?这完全取决于具体的程序。对于任何有效参数,scanf将返回EOF或not。您通常在。。。对于scanf…==EOF?这完全取决于具体的程序。对于任何有效参数,scanf将返回EOF或not。