c语言中文件读入处理写入实战

可以使用文件操作和字符串处理函数来实现将读取的文件内容去掉空白的内容,然后将其连起来的功能。下面是一个示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void removeWhitespace(char* str) {
    int i, j;
    for (i = 0, j = 0; str[i] != '\0'; i++) {
        if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n') {
            str[j++] = str[i];
        }
    }
    str[j] = '\0';
}

int main() {
    FILE* file = fopen("input.txt", "r");
    if (file == NULL) {
        printf("Failed to open the file.\n");
        return 1;
    }

    fseek(file, 0, SEEK_END);
    long fileSize = ftell(file);
    fseek(file, 0, SEEK_SET);

    char* content = (char*)malloc(fileSize + 1);
    if (content == NULL) {
        printf("Failed to allocate memory.\n");
        fclose(file);
        return 1;
    }

    fread(content, 1, fileSize, file);
    content[fileSize] = '\0';

    fclose(file);

    removeWhitespace(content);

    printf("Result: %s\n", content);

    free(content);

    return 0;
}

用c语言写个程序,读取input.txt文件,把读取的内容,处理成先写一个十六进制的地址00000000,再冒号加空格,两个字节再加上一个空格,两个字节加上一个空格,当处理了十次两个字节后,接分号。这样第一行就完成了,把第一行写入一个新的txt文件名叫output.txt。
第二行和第一行类似,先写一个十六进制的地址,只是地址累加了16,再冒号加空格,两个字节再加上一个空格,两个字节加上一个空格,当处理了十次两个字节后,接分号。这样第二行就完成了,把第二行写入一个新的txt文件。第三行和上面类似,只是地址累加16,处理完了接着写入output.txt。直到input.txt文件内容处理完

输入文件如下

int main() {
    FILE *inputFile, *outputFile;
    char inputFileName[] = "input_rm_space.txt";
    char outputFileName[] = "output.txt";
    char byte[3];
    int count = 0;

	// 初始化累加值为0x00000000  
    unsigned int sum = 0x00000000;  

	// 定义一个字符串来存储结果  
    char result[12]; // 8位数字    + 1个'h' + 3个结束符'\0'  
  

    // 打开input.txt文件
    inputFile = fopen(inputFileName, "r");
    if (inputFile == NULL) {
        printf("无法打开文件 %s\n", inputFileName);
        return 1;
    }

    // 创建output.txt文件
    outputFile = fopen(outputFileName, "w");
    if (outputFile == NULL) {
        printf("无法创建文件 %s\n", outputFileName);
        return 1;
    }

    // 逐行读取input.txt文件内容并处理
    while (!feof(inputFile)) {
        // 读取一行数据
        //fgets(address, sizeof(address), inputFile);

        // 处理第一部分:地址 ,将结果转换为字符串,并存入到result中  
    	sprintf(result, "%08xh", sum);
        fprintf(outputFile, "%s: ", result);

        // 处理第二部分:字节
        while (count < 16) {
            fgets(byte, sizeof(byte), inputFile);
            fprintf(outputFile, "%s ", byte);
            count++;
        }

		sum += 0x10;

        // 处理完一行后换行
        fprintf(outputFile, ";\n");

        // 重置计数器
        count = 0;
    }

    // 关闭文件
    fclose(inputFile);
    fclose(outputFile);

    printf("处理完成!请查看 %s 文件。\n", outputFileName);

    return 0;
}  

处理完如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值