C语言逐行读取文件中整数与字符的实现问题咨询
解决方法
你可以按分段读取的逻辑实现需求,C 语言标准库的格式化输入函数可以自动处理前两行整数和后续字符内容的读取,不需要手动判断输入类型。
实现步骤
- 首先用
fopen打开目标文本文件,注意校验文件打开是否成功,避免空指针报错 - 用
%d格式符读取前两行的整数值,fscanf会自动将连续的数字字符转换为int类型,自动跳过换行符 - 后续每行都是两个字符,用
%c格式符逐行读取两个字符即可,首字符如果是数字,后续可以通过isdigit()函数(需引入<ctype.h>头文件)判断,转换为数值只需减去字符'0'即可
完整示例代码
#include <stdio.h> #include <ctype.h> int main() { // 替换为你的实际文件路径 FILE *fp = fopen("data.txt", "r"); if (fp == NULL) { printf("文件打开失败,请检查路径是否正确\n"); return 1; } // 读取前两行的两个整数 int first_num, second_num; fscanf(fp, "%d\n%d\n", &first_num, &second_num); printf("前两个整数分别为:%d、%d\n", first_num, second_num); char first_char, second_char; int line_index = 0; // 循环读取后续行,直到文件结束 while (fscanf(fp, "%c%c\n", &first_char, &second_char) == 2) { line_index++; printf("\n第%d组后续内容:\n", line_index); printf("第一个字符:%c,第二个字符:%c\n", first_char, second_char); // 判断第一个字符是否为数字 if (isdigit(first_char)) { int val = first_char - '0'; printf("第一个字符是数字,对应数值为:%d\n", val); } else { printf("第一个字符是字母\n"); } } fclose(fp); return 0; }
注意事项
- 如果后续行的两个字符之间存在空格,可以把读取格式改为
"%c %c\n"自动跳过空格 - 读取到文件末尾时
fscanf会返回EOF,循环自动终止
内容的提问来源于stack exchange,提问作者Tryer outer
相关产品推荐
相关产品推荐

