VC下 fputc写入失败,求指导
#include <stdio.h>#include <stdlib.h>
main()
{
int t=0;
FILE *in,*out,**fp;
char infile[10],outfile[10],ch,ch2;
int pos;
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if ((in=fopen(infile,"r"))==NULL)
{
printf("Can't open infile!\n");
exit(0);
}
if ((out=fopen(outfile,"w+"))==NULL)
{
printf("Can't open outfile!\n");
exit(0);
}
// start
fp=∈ // in.txt-> "23BB..."
ch=fgetc(*fp);
while(ch!=EOF)
{
t++;
if (t!=1)
{
fseek(out,-1L,2);
ch2=fgetc(out);
if (ch==ch2)
{
fseek(out,-1L,2);
}
// fseek(out,1L,2);
printf("ch2=%c ",ch2);
}
fputc(ch,out);
printf("ch=%c, %d\n",ch,ferror(out));
// clearerr(out);
ch=fgetc(*fp);
}
// system("pause");
fclose(in);
fclose(out);
}
//fseek(fp,x,SEEK_SET),x表示光标回到距SEEK_SET有x个字节处的位置,含0;
//SEEK_SET可用0代替,表示文件开始位置
//SEEK_CUR可用1代替,表示文件当前位置
//SEEK_END可用2代替,表示文件末尾位置,此时通常x为负数,表示倒退
注1:从in.txt中读取数据,写入到out.txt中。每次写之前,与out.txt中之前写入的字符作比较,一样的话就光标前移一个字节,重新写一遍。即:out.txt同时涉及写读操作
注2:例:in.txt中为23BB,程序执行结果out.txt中只有2,即:第一次读取存入的'2'后,'3’就已经写入失败。
注3:XP下编译平台VC++6.0(devc++结果一样)。经测试,在mac和linux系统下,gcc编译后貌似结果没问题。所以是否与库函数中fputc函数原型有关?
注4:如果非要用fputc实现的话,该怎么改?