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

#include"stdafx.h"#include<stdio.h>#include<iostream>#include<math.h>#include<fstream... #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。
展开
 我来答
cobrawlm
2014-03-21 · TA获得超过136个赞
知道答主
回答量:81
采纳率:0%
帮助的人:23.1万
展开全部

将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("错误");
  }

}

云帆00沧海
2014-03-21 · 超过15用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:29.6万
展开全部
读文件的缓冲区应该是char类型的,不是int型的,如果要用int,就使用二进制进行读写(fread,fwrite)
追问
TXT文件里是1024个0-9的数字。。

如果不用二进制读写,该怎么办呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kj1056564568
2014-03-21 · TA获得超过110个赞
知道答主
回答量:152
采纳率:50%
帮助的人:100万
展开全部
建议你断点看看e的值,还有你为啥要把e的值转到z然后再写文件啊。你可以试试直接一边读文件,一边写文件。省掉e和z能节省内存空间
更多追问追答
追问
把Z删除了,结果是一样的。。输出1216523149-858993460-858993460-858993460……………………
追答
错误不是z的问题,我的意思是,你先在fclose(f);打个断点,然后查看e的值对不对。这样可以确定是不是读取出错的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式