#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");
}
----------------解决方案--------------------------------------------------------