xjgcyq1
2017-05-21 07:28
采纳率: 100%
浏览 15.3k
已采纳

c语言 读入txt数据文件存入数组,并输出

输出文本11.txt
1,2,5,3,66,32,11,22,
34,55,8,5,6,5,4,43,
36,35,34,42,23,43,23,43,
...................
存入数组再输出保存22.txt
01,02,05,03,
66,32,11,22,
34,55,08,05,
06,05,04,43,
36,35,34,42,
23,43,23,43,
......................

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • shen_wei 2017-05-22 09:36
    已采纳
     struct Data
    {   
        int nRow[8];
    };
    
    
    
    
    int main()
    {  
        Data data[3];
    
        FILE *fp = fopen("1.txt","rb");  
        if (fp == NULL)
        {
            printf("can not open file!\n");
            exit(0);
        }
        for(int i = 0;i < 3;i ++)
        {
            int nRes = fscanf(fp,"%d,%d,%d,%d,%d,%d,%d,%d,",&data[i].nRow[0],&data[i].nRow[1],&data[i].nRow[2],
                &data[i].nRow[3],&data[i].nRow[4],&data[i].nRow[5],&data[i].nRow[6],&data[i].nRow[7]);
            if (nRes == -1)
            {
                fclose(fp);
            }
        }
        fclose(fp);
    
        fp = fopen("2.txt","w+");  
        if (fp == NULL)
        {
            printf("can not open file!\n");
            exit(0);
        }
    
        for (int i = 0;i < 3;i ++)
        {
            char czBuf[100] = {0};
            sprintf(czBuf,"%02d,%02d,%02d,%02d,\n%02d,%02d,%02d,%02d,\n",data[i].nRow[0],data[i].nRow[1],data[i].nRow[2],
                data[i].nRow[3],data[i].nRow[4],data[i].nRow[5],data[i].nRow[6],data[i].nRow[7]);
    
            fwrite(czBuf,strlen(czBuf),1,fp);
        }
        fclose(fp);
    
        return 0;
    }
    
    点赞 打赏 评论
  • T_world 2017-05-21 07:33

    也就是读取一个文件,这个文件中是8个数字一行,然后把数据写到另外一个文件中,改成4个数字一行,并且把不足两位的数字补齐。是这样的条件吗?有没有大于两位的数字?

    点赞 打赏 评论
  • xjgcyq1 2017-05-21 08:25

    是的,输入文件是8个数字一行,但一定要先存入数组,再输出4个数字一行,正常是一位 至五位 。不足的补2位就可以,输入和输出所有数字都是以逗号隔开。

    点赞 打赏 评论
  • blownewbee 2017-05-21 09:22
    点赞 打赏 评论

相关推荐 更多相似问题