文件替换的简单c程序

前几天一个朋友让参谋写个程序,实现简单的excel中的数据分别填充到work中,一行参数写一个work

考虑到word格式复杂,本人c也很捉急,就决定分别复制到txt中,然后创建txt文件,写入,人工复制到word中。因为对格式没要求,所以很简单,如下:


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

#define ParameterNumOfOneFile 3
#define ParameterFileName "list.txt"
#define ModuleFileName "file.txt"

int main(int argc, const char * argv[]) {
    
    void writeParaToFile(char paraArray[ParameterNumOfOneFile][100]);
    void writeParaToFile2(char para000[100],char para001[100],char para002[100]);
    
    //打开参数文件,读取参数至内存
    FILE * pfp=fopen(ParameterFileName,"r");
    
    char para000[100];
    char para001[100];
    char para002[100];
    
    while(ParameterNumOfOneFile == fscanf(pfp,"%s %s %s",para000,para001,para002))
    {
        char para[ParameterNumOfOneFile][100];
        
        for (int i = 0; i < 100; i++) {
            para[0][i] = para000[i];
            if (para000[i] == 0) {
                break;
            }
        }
        
        for (int i = 0; i < 100; i++) {
            para[1][i] = para001[i];
            if (para000[i] == 0) {
                break;
            }
        }
        
        for (int i = 0; i < 100; i++) {
            para[2][i] = para002[i];
            if (para000[i] == 0) {
                break;
            }
        }
        
        //拿到了参数,开始写入相应文件
//        writeParaToFile(para);
        writeParaToFile2(para000,para001,para002);
        
    }
    
    //关闭文件
    fclose(pfp);
    return 0;
}

void writeParaToFile2(char para000[100],char para001[100],char para002[100]){
    
    char fileName[100*ParameterNumOfOneFile];
    
    strcat(strcat(strcat(strcat(strcat(fileName,""),para000),para001),para002),".txt");//在本地文件夹中创建txt文件
    
    FILE * newfp;
    
    newfp=fopen(fileName,"wb");

    //打开模板txt文件
    FILE * mfp=fopen(ModuleFileName,"r");
    

    char moduleString[100000];
    char tmpStr[1000];
    
    while (1 == fscanf(mfp,"%s",tmpStr)) {


        if (strstr(tmpStr,"TXT") ) {
            //包含
            int currentParaIndex = (int)tmpStr[4];
            switch (currentParaIndex - 49) {
                case 0:
                    
                    fputs(para000,newfp);
                    break;
                case 1:

                    fputs(para001,newfp);
                    break;
                case 2:

                    fputs(para002,newfp);
                    break;
                default:
                    break;
            }

        }else{
            fputs(tmpStr,newfp);
        }
        fputs("\n",newfp);
    }
    
    fclose(newfp);
    fclose(mfp);
    
    memset(fileName, 0x00, sizeof (char) * 300);
    return;
    
    
}

void writeParaToFile(char paraArray[ParameterNumOfOneFile][100]){
    
    char para000[100];
    char para001[100];
    char para002[100];
    
    for (int i = 0; i < 100; i++) {
        para000[i] = paraArray[0][i];
        
        if (para000[i] == 0) {
            break;
        }
    }
    
    for (int i = 0; i < 100; i++) {
        para001[i] = paraArray[1][i];
        
        if (para000[i] == 0) {
            break;
        }
    }

    for (int i = 0; i < 100; i++) {
        para002[i] = paraArray[2][i];
        if (para000[i] == 0) {
            break;
        }
    }
    char fileName[100*ParameterNumOfOneFile];
    
    strcat(strcat(strcat(fileName,para000),para001),para002);
    
    printf("***fileName == %s \n",fileName);
    
    memset(fileName, 0x00, sizeof (char) * 300);
    
    return;
    
    strcat(fileName,".txt");
    
    FILE * newfp;
    
    newfp=fopen(fileName,"wb");
    
    //打开模板txt文件
    FILE * mfp=fopen(ModuleFileName,"r");
    
    char moduleString[100000];
    char tmpStr[1000];
    
    while (1 == fscanf(mfp,"%s",tmpStr)) {
        
        if (strstr(tmpStr,"TXT") ) {
            //包含
            int currentParaIndex = (int)tmpStr[3];
            
            tmpStr[0] = 0;
            tmpStr[1] = 0;
            tmpStr[2] = 0;
            tmpStr[3] = 0;
            
            for (int i = 0; i < 100; i++) {
                tmpStr[i] = paraArray[currentParaIndex][i];
                if (tmpStr[i] == 0) {
                    break;
                }
            }
        }
        
        printf("NOW == %s, tem == %s \n",moduleString,tmpStr);
        
        fputs(tmpStr,newfp);
    }
    
    fclose(newfp);
    fclose(mfp);
    
}

PS:第一个写入文件方法有问题,2可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值