C语言实现:从文件中提取连续数字并输出正整数

本程序从文件 trans.in 中读取文本,提取出所有连续的数字字符,并将它们转换为正整数后输出到文件 trans.out 中。

程序功能:

  1. 读取文件内容
  2. 识别连续的数字字符
  3. 将连续数字字符转换为正整数
  4. 过滤掉正整数最高位的 '0'
  5. 将所有提取到的正整数输出到文件,以空格分隔,并在末尾添加回车符

C语言代码实现:

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

int main() {
    FILE *in = fopen('trans.in', 'r');
    FILE *out = fopen('trans.out', 'w');
    if (in == NULL || out == NULL) {
        printf('文件打开失败!\n');
        return 0;
    }

    char c;
    int num = 0;
    int flag = 0; // 标记是否正在读取数字
    while ((c = fgetc(in)) != EOF) {
        if (isdigit(c)) {
            flag = 1;
            num = num * 10 + c - '0';
        } else {
            if (flag) { // 如果之前正在读取数字
                while (num >= 10 && num % 10 == 0) num /= 10; // 过滤掉最高位的0
                fprintf(out, '%d ', num);
                num = 0;
                flag = 0;
            }
        }
    }
    if (flag) { // 处理最后一个数字
        while (num >= 10 && num % 10 == 0) num /= 10;
        fprintf(out, '%d', num);
    }
    fprintf(out, '\n');

    fclose(in);
    fclose(out);
    return 0;
}

代码说明:

  • 使用 isdigit(c) 函数判断字符是否为数字
  • 使用 flag 变量标记是否正在读取一个连续的数字字符串
  • 使用 num 变量存储当前读取到的数字
  • 使用循环和除法运算过滤掉数字最高位的 '0'
  • 使用 fprintf() 函数将结果输出到文件

示例输入 (trans.in):

df-23adfd56 2343?23dgjop00535

示例输出 (trans.out):

23 56 2343 23 535
C语言实现:从文件中提取连续数字并输出正整数

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

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