c语言,读取TXT文件,输出到TXT文件。

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include<math.h>
#include<fstream>
using namespace std;

int main()
{
int e[1024];
int i;

FILE *f=fopen("\\psf\home\desktop\探测器1.txt","r")
FILE *fp1=0;

if(f!=NULL)
{
for(i=0;i<1024;i++)
{
fscanf(f,"%d",&e[i]);
}

fclose(f);

int Z[1024];
for(i=0;i<1024;i++)
{
Z[i]=e[i];
}
fp1=fopen("探测器KK.txt","w+");
for (i=0;i<1024;i++)
{
fprintf(fp1,"%d",Z[i]);
}//输出到TXT文件
fclose(fp1);//关闭流
return 0;
}
else
{printf("错误");}
}

写程序遇到错误,查验后是这一段出现问题,,,所以单独挪出来进行测试,就是打开TXT文件,浏览并输出同样的TXT文件。

作为输入的TXT文件是1024个10进制数字,

但是经过程序输出的TXT文件则每一位都为-858993460,

按理说两个TXT应该数据一样。

求大神指教,感激不尽。
TXT文件是1024个0-9的整数,依次读取放入数组Z[1023],然后输出Z[1023]到一个新的TXT。

将fscanf(f,"%d",&e[i]);,换成fscanf(f, "%c",&buffer); e[i]=buffer-48;,并在for循环外加buffer的声明:char buffer;

 

运行截图和代码如下:

 

int main(int argc, char* argv[])
{
  int e[1024];
  int i;
 
  FILE *f=fopen("探测器1.txt","r");
  FILE *fp1=0;

  if(f!=NULL)
  {
    char buffer;
    for(i=0;i<1024;i++)
    {
      fscanf(f, "%c",&buffer);
      e[i]=buffer-48;
    }

    fclose(f);

    int Z[1024];
    memcpy(Z,e,1024*sizeof(int));/*如果只是复制,这个更高效*/

    fp1=fopen("探测器KK.txt","w+");
    for (i=0;i<1024;i++)   //输出到TXT文件
    {
      fprintf(fp1,"%d",Z[i]);
    }
    fclose(fp1);//关闭流
    return 0;
  }
  else
  {
    printf("错误");
  }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-21
读文件的缓冲区应该是char类型的,不是int型的,如果要用int,就使用二进制进行读写(fread,fwrite)追问

TXT文件里是1024个0-9的数字。。

如果不用二进制读写,该怎么办呢?

第2个回答  2014-03-21
建议你断点看看e的值,还有你为啥要把e的值转到z然后再写文件啊。你可以试试直接一边读文件,一边写文件。省掉e和z能节省内存空间追问

把Z删除了,结果是一样的。。输出1216523149-858993460-858993460-858993460……………………

追答

错误不是z的问题,我的意思是,你先在fclose(f);打个断点,然后查看e的值对不对。这样可以确定是不是读取出错的问题。

追问

e的值是0x0012ef80,不知道什么意思。。。不过e是数组啊。

相似回答
大家正在搜