文件的有关操作,请各位指教!
想从一个文件考数据到另一个文件:
源文件t.txt中是字符:a—z。
程序在屏幕输出的是一堆不认识的字符(应该是ASCII字符吧),文件tw.txt中得到的全部是字符'z'。这是怎么回事?
另外,我想从别的目录下的文件中拷贝数据到别的目录中的文件,应该怎么做?比方说:我的tc2.0装在c:\tc下,现在我只会从c:\tc\bin目录下操作文件,但是我想从别的路径操作就不会了,请各位指教!谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
FILE *fp1,*fp2;
char buf[26];
int i;
if((fp1=fopen("t.txt","rb"))==NULL)
{
printf("open t error!");
getch();
exit(0);
}
for(i=0;i<26;i++)
{
putchar(buf[i]);
}
for(i=0;i<26;i++)
{
if(fread(&buf,sizeof(char),1,fp1)!=1)
{
printf("read error!");
getch();
exit(0);
}
}
if((fp2=fopen("tw.txt","wb"))==NULL)
{
printf("open tw error!");
getch();
exit(0);
}
rewind(fp1);
for(i=0;i<26;i++)
{
if(fwrite(buf,sizeof(char),1,fp2)!=1)
{
printf("write error!");
getch();
exit(0);
}
}
fclose(fp2);
fclose(fp2);
getch();
}
问题点数:50、回复次数:12Top
1 楼jieshen(吃"食"大仙)回复于 2002-06-20 21:38:47 得分 0
gzTop
2 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:43:47 得分 15
for(i=0;i<26;i++)
{
putchar(buf[i]);//buf[i]没有初始化,当然输出乱码 }
Top
3 楼SeainBlue(爱海)回复于 2002-06-20 21:44:36 得分 15
最后一个循环:
for(i=0;i<26;i++)
{
if(fwrite(buf+i,sizeof(char),1,fp2)!=1)
//if(fwrite(buf,sizeof(char),1,fp2)!=1)
{
printf("write error!");
getch();
exit(0);
}
}
Top
4 楼SeainBlue(爱海)回复于 2002-06-20 21:46:44 得分 0
另外:你的并没有读入t.txt文件的内容到buf数组中,自然会出现乱码Top
5 楼SeainBlue(爱海)回复于 2002-06-20 21:48:19 得分 0
倒数第三行
fclose(fp1); // fclose(fp2);
Top
6 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:52:23 得分 0
if(fread(&buf,sizeof(char),1,fp1)!=1)//你将所有的字符都读到buf[0]中了;于是后面的将前面的覆盖了。
{
printf("read error!");
getch();
exit(0);
}
其实你不需要for循环,只要
fread(&buf,sizeof(char),26,fp1);即可。
至于其它目录的文件,只要把路径名一起加入就可。Top
7 楼SeainBlue(爱海)回复于 2002-06-20 21:52:43 得分 0
for(i=0;i<26;i++)
{
if(fread(buf+i,sizeof(char),1,fp1)!=1)
//if(fread(buf,sizeof(char),1,fp1)!=1)
{
printf("read error!");
getch();
exit(0);
}
}
Top
8 楼wengzuliang(Jeff)回复于 2002-06-20 21:53:46 得分 5
若你文件位置在"d;\output\file1.txt"
则,fopen("d:\\output\\file1.txt","r")
注意是两个‘\’Top
9 楼Montaque(每天回答两个问题)回复于 2002-06-20 21:53:46 得分 5
putchar(buf[i]);//buf[i]没有初始Top
10 楼oujinliang(大漠孤烟)回复于 2002-06-20 21:55:51 得分 0
错了。是buf不是&buf.前面几位分析也是的。Top
11 楼jackeyjia(毛毛虫)回复于 2002-06-21 09:33:24 得分 10
一下程序可以通过:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
//#define SFILE "t.txt"
#define SFILE "e:\\c\\test\\Debug\\t.txt" /*从别的路径取文件*/
#define BUFSIZE 26
void main()
{
FILE *fp1,*fp2;
char buf[BUFSIZE];
memset(buf, '\0', BUFSIZE);
if((fp1=fopen(SFILE,"rb"))==NULL)
{
printf("open t error!");
getch();
exit(0);
}
if(fread(buf,sizeof(char),BUFSIZE,fp1) == 0)
{
printf("read error!\n");
getch();
exit(0);
}
if((fp2=fopen("tw.txt","wb"))==NULL)
{
printf("open tw error!");
getch();
exit(0);
}
if(fwrite(buf, sizeof(char), sizeof(buf), fp2) == 0)
{
printf("write error!");
getch();
exit(0);
}
fclose(fp1);
fclose(fp2);
getch();
}
Top
12 楼hurrah_yule(子曰:学而时习之)回复于 2002-06-22 14:07:55 得分 0
暂时明白了!谢谢各位!结帖!Top




