请问fopen弱弱问题
看了一个题目,就是C程序设计(谭老爷子)第二版13章的第5题:
有两个磁盘文件"A"和"B",各存放一行字母,要求把这个文件中的信息合并(按字母顺序排列),输出到一个新文件"C"中。(完毕)
问题1:题目中的磁盘文件A和B,C,是否必须只能是文本型文件?(就是能有Notepad打开进行编辑的)不然其他格式文件怎么知道哪行是否有字母?比如一个*.bmp文件。
问题2:按照老谭给的代码,不能运行成功啊!!!:
int main(int argc, char* argv[])
{
FILE *fp;
int i,j,n,il;
char c[100],t,ch;
if((fp==fopen("a1","r"))==NULL)
{
printf("Can't open the file\n");
exit(0);///总在这一行跳出,是不是我没有创建文件a1呢?可是我创建了一个文件然后将该为fopen("C:\\a1","r")也不行啊?
}
printf("\n FILE A:\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{
c[i]=ch;
putchar(c[i]);
}
fclose(fp);
il=i;
if((fp==fopen("b1","r"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
printf("\n FILE A:\n");
for(i=il;(ch=fgetc(fp))!=EOF;i++)
{
c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(c[i]>c[j]){
t=c[i];
c[i]=c[j];
c[j]=t;}
printf("\n file C:\n");
fp=fopen("c1","w");
for(i=0;i<n;i++)
{
putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
printf("Hello World!\n");
return 0;
}
客套话,不说了!帮忙看看,回答了就给分。谢谢啊