c - 代码从 C 中的文本文件中读取几行
问题描述
我想创建一个程序来从一个有 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';
}
}
推荐阅读
- python - 使用 django-python3-ldap 查找安全组的用户
- ms-access - 在报表中显示访问查询结果
- mysql - 转换 SQL 日期时间格式(MySQL 到 SQL)
- c - C 函数优化
- java - 哪一个更适合低延迟 Java 应用程序?弹簧靴还是只是弹簧?
- indexeddb - 使用索引数据库在现有数据库中动态创建对象存储
- azure - 如何通过扩展将 azure vm 加入到本地域?
- ruby-on-rails - 错误“必须存在” - 在轨道上创建寄存器
- r - 根据条件添加列;保留值,每次满足条件时递增
- shell - Zip - 如何使用数据库黑名单从 zip 中排除文件?