gpt4 book ai didi

c - 而 C 中的 EOF

转载 作者:行者123 更新时间:2023-11-30 18:59:14 24 4
gpt4 key购买 nike

我正在尝试使用以下代码从 txt 文件读取数据,但它仅打印文件中的第一行。

int main() {
int chave;
char ordem[5];
struct tTree *arvore = (struct tTree*)malloc(sizeof(struct tTree));
arvore->raiz = NULL;
scanf("%s", ordem);
printf("%s\n", ordem);
setbuf(stdin, NULL);
do {
scanf("%d", &chave);
insere(criaItem(chave), arvore);
setbuf(stdin, NULL);
} while(chave != EOF);

if(strcmp(ordem, "PRE") == 0) {
pre(arvore->raiz);
}
else if(strcmp(ordem, "POS") == 0){
pos(arvore->raiz);
}
else if(strcmp(ordem, "IN") == 0){
in(arvore->raiz);
}
printf("%d\n", altura(arvore->raiz)-1);
system("pause");
}

最佳答案

while (scanf("%d", &chave) == 1)
{
insere(criaItem(chave), arvore);
printf("Read: %d\n", chave); // Debugging
// setbuf(stdin, NULL); // Pointless once there's been an I/O operation on stdin
}

这可以正确测试 EOF 和其他错误,并预先进行测试。几乎总是,最好在循环开始时执行读取操作并测试它是否成功。

您编写的内容存在大量问题,其中最重要的是键入 -1 作为输入值会终止循环。

关于c - 而 C 中的 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com