文件读写错误!
程序代码:
/* 有两个磁盘文件“A”和“B”,各存放一行字母,今要求把这两个文件中的信息 合并(按字母顺序排列),输出到一个新文件“C”中去。 */ /* 思路: 1、建立两个可读写文件file1、file2,将str1、str2字符串分别读入到file1,file2; 2、将file1,file2中的字符串写入到str3,在str3中对字符串进行排序; 3、将str3字符串按字符依次写入到file3并输出。 */ #include"stdio.h" #include"string.h" #include"stdlib.h" void main() { FILE *fp1,*fp2,*fp3; char str1[20],str2[20],str3[40],temp; unsigned int i,j; if((fp1=fopen("file1.txt","w"))==NULL) { printf("Can not find the file!\n"); getchar(); exit(0); } if((fp2=fopen("file2.txt","w"))==NULL) { printf("Can not find the file!\n"); getchar(); exit(0); } if((fp3=fopen("file3.txt","w"))==NULL) { printf("Can not find the file!\n"); getchar(); exit(0); } fclose(fp1); fclose(fp2); printf("input string1:"); gets(str1); printf("input string2:"); gets(str2); fputs(str1,fp1); //将str1字符串写入到fp1; fputs(str2,fp2); //将str2字符串写入到fp2; //以上测试正常,fp1,fp2已被写入数据 fp1=fopen("D:\\VC\\第十章-文件\\file1.txt","r"); fp2=fopen("D:\\VC\\第十章-文件\\file2.txt","r"); fgets(str3,strlen(str1),fp1);//将fp1的字符串读入到str3; fgets(str3,strlen(str2),fp2);//将fp2的字符串读入到str3; /*以下测试str3是否读取到数据*/ puts(str3); getchar(); /*测试错误:烫烫烫+str2字符串,str3未成功读取数据。对"fp1/fp2"进行rewind也没用*/ /*对str3字符串排序*/ for(i=0;i<strlen(str1)+strlen(str2);i++) for(j=i+1;j<strlen(str1)+strlen(str2);j++) if(str3[i]>str3[j]) { temp=str3[i]; str3[i]=str3[j]; str3[j]=temp; } /*将str3字符串写入到fp3*/ for(i=0;i<strlen(str1)+strlen(str2);i++) { fputc(str3[i],fp3); putchar(str3[i]); } } //目前主要问题是str3未读取到数据。
[ 本帖最后由 a4811 于 2013-1-8 16:22 编辑 ]