我在打印从 C 中的文件读取的行时遇到问题

问题描述 投票:0回答:1

我有一个名为 DB.txt 的文件,我在 for 循环中读取行并将这些行打印出来,但没有打印任何内容。我认为值得一提的是,我在 MAC 上使用 CLion 进行编码,因为当我处理文件时总是会出现一些问题(例如,我尝试写入文件,但不是我输入的内容,而是在该文件中总是出现垃圾33)

所以我的代码现在看起来像这样

int fileInput(struct nn *record){
    FILE *f;
    f = fopen("DB.txt", "r");
    char buffer[80];

    if(f == NULL){
        printf(stderr, "Cannot open file");
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), f) != NULL) {
            printf("%s", buffer);
        }
//            int j = 0;
//            char *token = strtok(buffer, " ");
//            while(token != NULL){
//                strcpy(record[x].params[j], token);
//                token = strtok(NULL, " ");
//                j++;
//            }
//            x++;
        }
    }
    fclose(f);
    return 1;
}

(注释部分应该用空格分隔行并将每个字符串添加到结构体数组中,但现在它不相关) 我只是不明白为什么它不打印任何东西

c file
1个回答
0
投票

您的工作目录可能与包含该文件的文件夹不同

DB.txt
,因为您正在从相对路径读取。但您可能错过了该错误,因为您使用
printf
来打印错误,而不是使用
fprintf
打印到文件句柄 (
stderr
)。

您可以参考另一个 StackOverflow 答案来了解如何设置工作目录。

© www.soinside.com 2019 - 2024. All rights reserved.