我想创建一个程序来从包含 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);
最佳答案
每当您发现自己用数字后缀命名变量时,您可能应该使用数组。因此,请使用二维数组,而不是三个数组 name1
、name2
和 name3
:
#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/