我正在尝试使用以下代码从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作为输入值会终止循环。

09-06 13:08
查看更多