C语言提取文件中连续数字并去除前导零

这篇文章提供了一个C语言程序,可以从文本文件中提取所有连续的数字序列,并将它们转换为正整数。程序会忽略前导零,例如 '00535' 会被转换为 '535'。程序从 'trans.in' 文件读取输入,并将结果输出到 'trans.out' 文件。

代码实现

#include <stdio.h>
#include <ctype.h>

int main() {
    FILE *fin, *fout;
    fin = fopen('trans.in', 'r');
    fout = fopen('trans.out', 'w');
    char c;
    int num = 0, flag = 0; // flag表示是否正在读数字
    while ((c = fgetc(fin)) != EOF) {
        if (isdigit(c)) { // 当前字符是数字
            if (flag) { // 如果正在读数字,将数字加到num中
                num = num * 10 + c - '0';
            } else { // 如果还没开始读数字,标记开始读数字
                flag = 1;
                num = c - '0';
            }
        } else { // 当前字符不是数字
            if (flag) { // 如果之前正在读数字,输出num
                fprintf(fout, '%d ', num);
                flag = 0;
                num = 0;
            }
        }
    }
    if (flag) { // 如果最后一个字符是数字,输出num
        fprintf(fout, '%d ', num);
    }
    fprintf(fout, '
'); // 输出回车符
    fclose(fin);
    fclose(fout);
    return 0;
}

代码解释

  1. 程序首先打开输入文件 'trans.in' 和输出文件 'trans.out'。
  2. 然后,程序逐个字符读取输入文件,直到文件结束。
  3. 对于每个字符,程序会检查它是否是数字。
  4. 如果是数字,程序会将其添加到当前数字字符串的末尾。
  5. 如果不是数字,程序会检查当前是否正在读取数字字符串。
  6. 如果是,程序会将当前数字字符串转换为整数,并将其输出到输出文件。
  7. 最后,程序关闭输入文件和输出文件。

示例

输入文件 (trans.in):

df-23adfd56 2343?23dgjop00535

输出文件 (trans.out):

23 56 2343 23 535

C语言提取文件中连续数字并去除前导零

原文地址: https://www.cveoy.top/t/topic/gl90 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录