代码从 C 文本文件中读取几行

标签 c scanf

我想创建一个程序来从包含 9 行的文本文件中读取前 3 行。请帮助我编写下面的代码并指出我做错了什么。

是否可以读取文本文件中的 3-6 行?

感谢您的帮助。

char name1[20], name2[20], name3[20];
FILE *fp = fopen("names.txt", "r");
while(3 == fscanf(fp, "%20[^\n]%*c%20[^\n]%*c%20[^\n]%*c", name1, name2, name3)){
    printf("%s, %s, %s\n", name1, name2, name3);
}
fclose(fp);

最佳答案

每当您发现自己用数字后缀命名变量时,您可能应该使用数组。因此,请使用二维数组,而不是三个数组 name1name2name3:

#define LINES 3
#define LINESIZE 20
char name[LINES][LINESIZE];

然后就可以循环读取行数,并且很容易改变行数。

for (int i = 0; i < LINES; i++) {
    if (fgets(name[i], LINESIZE, fp) == NULL) {
        break;
    }
    // Remove trailing newline if it's there
    size_z len = strlen(name[i]);
    if (name[i][len-1] == '\n') {
        name[i][len-1] = '\0';
    }
}

关于代码从 C 文本文件中读取几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874267/

相关文章:

c - scanf 的问题

C fscanf 意外地从下一行提取内容

你能在 Linux 中手动分配虚拟页面吗?

控制网络带宽

c - Linux 帧缓冲驱动程序和自定义文件操作

c - 为什么不能在 C 中编写 scanf ("%.2lf", &a) ?

c - 检查 C 泄漏的仪器?

C typedef 中令人困惑的语法

c - 用户在运行时动态地进行多个输入

c - 从 SCANF 返回 EOF