当前位置: 代码迷 >> C语言 >> [求助]我真的被搞的不行了.
  详细解决方案

[求助]我真的被搞的不行了.

热度:262   发布时间:2007-10-09 16:11:26.0
[求助]我真的被搞的不行了.
建立两个磁盘文件,在分别从键盘输入字符,再将两个文件合并后放入数组,最后输出到屏幕,程序如下:
#include<stdio.h>
main()
{
FILE *fp,*dp;
char c,d,str[100];
if((fp=fopen("f:\\z","w"))==NULL)
{
printf("can not open this file\n");
exit(0);
}
c=getchar();
while((c=getchar())!='*') 向文件输入字符
{
fputc(c,fp);
c=getchar();
}
printf("ok\n");
fclose(fp);
if((dp=fopen("f:\\y","w"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
d=getchar();
while((d=getchar())!='#')
{
fputc(d,dp);
d=getchar();
}
printf("ok\n");
fclose(fp);
fp=fopen("f:\\z","a") ;
dp=fopen("f:\\y","r");
while(!feof(dp))
{
fputc(fgetc(dp),fp);
}
fgets(str,35,fp); /*从fp指向的文件读入35个字符到str数组,读多少有问题吗?如果我的文件里只有14个字符呢?*/
fclose(fp);fclose(dp);
printf("%s\n",str);
system("pause");
}
怎么又不能通过呢?我用的是TC.救命啊,大虾们!!我不行了.搞了一个晚上了

----------------解决方案--------------------------------------------------------

看了这段代码,里面细节错误很多。。。

第一
c=getchar();
while((c=getchar())!='*') 向文件输入字符
{
fputc(c,fp);
c=getchar();
}
中,重复输入。。。类似还有一处。。。
第二:这里
while(!feof(dp))
{
fputc(fgetc(dp),fp);
}
文件尾的处理有问题。。。
第三:追加后,文件指针处理文件尾,你说此时读入数组的是什么呢???

这三处改完,就能达到你的目的了。!


----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
FILE *fp, *dp;
char c, d, str[100] = {0};
int a;
unsigned long len;

if ((fp = fopen("f:\\z", "w")) == NULL)
{
printf("can not open this file\n");
exit(0);
}

while ((c = getchar()) != '*')
{
fputc(c, fp);
}

printf("ok\n");
fclose(fp);

fflush(stdin);

if ((dp = fopen("f:\\y", "w")) == NULL)
{
printf("cannot open this file\n");
exit(0);
}

while ((d = getchar()) != '#')
{
fputc(d, dp);
}

printf("ok\n");
fclose(dp);

fp = fopen("f:\\z", "ab+") ;
dp = fopen("f:\\y", "r");

while ((a=fgetc(dp))!=EOF)
{
fputc(a, fp);
}

fseek(fp, 0, SEEK_SET);
fgets(str, 30, fp);
fclose(fp);
fclose(dp);

printf("%s\n", str);
system("pause");
}


----------------解决方案--------------------------------------------------------
  相关解决方案