C语言实现从指定txt文件读取所有数字并输出到新文件的问题求助
C语言读取TXT文件数字并写入新文件实现方案
常见出错原因排查
你遇到的输出结果和原文件数字不一致的问题,90%以上属于以下三类错误:
- 直接用
%d格式符读取混合内容的文件:%d遇到非数字字符会直接终止读取,导致后续数字漏读 - 字符与整数转换错误:直接将字符型的
'0'~'9'按整数输出,得到的是ASCII码值(如'0'输出为48而非0) - 未做文件打开成功校验:空指针操作导致读取写入逻辑异常
实现代码
场景1:提取所有数字字符原样输出(如原文件a1b23c输出为123)
#include <stdio.h> #include <ctype.h> int main() { FILE *finp = fopen("你的原文件路径.txt", "r"); FILE *fout = fopen("输出文件路径.txt", "w"); if (finp == NULL || fout == NULL) { perror("文件打开失败"); return 1; } int ch; while ((ch = fgetc(finp)) != EOF) { if (isdigit(ch)) { fputc(ch, fout); // 若需要数字间加空格分隔,新增一行:fputc(' ', fout); } } fclose(finp); fclose(fout); return 0; }
场景2:读取连续多位数为完整整数输出(如原文件a1b23c输出为1 23)
#include <stdio.h> int main() { FILE *finp = fopen("你的原文件路径.txt", "r"); FILE *fout = fopen("输出文件路径.txt", "w"); if (finp == NULL || fout == NULL) { perror("文件打开失败"); return 1; } int num; // %*[^0-9] 表示跳过所有非数字字符,再读取整数 while (fscanf(finp, "%*[^0-9]%d", &num) == 1) { fprintf(fout, "%d\n", num); // 若需要用空格分隔而非换行,修改为:fprintf(fout, "%d ", num); } fclose(finp); fclose(fout); return 0; }
内容的提问来源于stack exchange,提问作者ELEVEN
相关产品推荐
相关产品推荐

