请问fopen弱弱问题

Brightzliu 2006-10-13 04:58:02
看了一个题目,就是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;
}

客套话,不说了!帮忙看看,回答了就给分。谢谢啊
...全文
176 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_b_c_abc10 2006-10-13
  • 打赏
  • 举报
回复
而楼主叙述的程序显然是不用扩展名的。
a_b_c_abc10 2006-10-13
  • 打赏
  • 举报
回复
问题1:题目中的磁盘文件A和B,C,是否必须只能是文本型文件?(就是能有Notepad打开进行编辑的)不然其他格式文件怎么知道哪行是否有字母?比如一个*.bmp文件。

=======================================================
文件的扩展名只是为了区别不同程序所使用的文件而用的,在windows系统中,很多的文件和程序建立了关联,所以双击文件会打开相应的程序。
但是你要自已写程序往一个*.bmp中写入一个字符也是可以的,只是与bmp文件关联的另一个程序不能正确打开这个文件而已。通常我们把写入字符的文件取扩展名为txt是因为我们想直接用notepad验证写入的正确性,其实也可以取其他扩展名,如dat,而写一个读取和显示的部分来验证写入的正确性。
Arthur_ 2006-10-13
  • 打赏
  • 举报
回复
问题1:题目中的磁盘文件A和B,C,是否必须只能是文本型文件?(
--------------
Brightzliu 2006-10-13
  • 打赏
  • 举报
回复
回家看结果,给分,结贴!
Brightzliu 2006-10-13
  • 打赏
  • 举报
回复
越问,越明白了。
还有第一个问题,大家帮忙回答一下!
问题1:题目中的磁盘文件A和B,C,是否必须只能是文本型文件?(就是能有Notepad打开进行编辑的)不然其他格式文件怎么知道哪行是否有字母?比如一个*.bmp文件。
Arthur_ 2006-10-13
  • 打赏
  • 举报
回复
目錄那裡的目錄?

如果把一個目錄設置為系統環境變量
哪麼在cmd下可以直接運行裡面的exe或者..
Brightzliu 2006-10-13
  • 打赏
  • 举报
回复
问题解决了。还确人各问题
所说的目录是系统环境变量下的文件路径吗?
westdot 2006-10-13
  • 打赏
  • 举报
回复
我在Win-TC上不加扩展名,不用双"\",同样打不开,我保证文件存在,路径正确!
todototry 2006-10-13
  • 打赏
  • 举报
回复
雁南飞,赞成
个人意见,高手多多指教
Arthur_ 2006-10-13
  • 打赏
  • 举报
回复
如果想沒有文件fopen創建文件
需要if((fp=fopen("a1","wr"))==NULL)//add w
Arthur_ 2006-10-13
  • 打赏
  • 举报
回复
只可能你那个目录下面没有这辆个文件

不然绝对不会有问题
=======================
對,頂後zui無所謂
westdot 2006-10-13
  • 打赏
  • 举报
回复
把扩展名加上。
if((fp=fopen("c:\\a.txt","r"))==NULL)
{
printf("Can't open the file\n");
exit(0);
}
飞哥 2006-10-13
  • 打赏
  • 举报
回复
只可能你那个目录下面没有这辆个文件

不然绝对不会有问题
Arthur_ 2006-10-13
  • 打赏
  • 举报
回复
建立兩個文件a1 b1
寫些東西上去
Brightzliu 2006-10-13
  • 打赏
  • 举报
回复
回答真快,谢谢啊!
我该了,还是不成功啊!一样进入到if语句中去,直接退出
飞哥 2006-10-13
  • 打赏
  • 举报
回复
再者,路径不用\\
普通路径名就可c:\a1

飞哥 2006-10-13
  • 打赏
  • 举报
回复
if((fp==fopen("a1","r"))==NULL)
{
printf("Can't open the file\n");

前目改成
if((fp=fopen("a1","r"))==NULL)//fp后面去个等号
{
printf("Can't open the file\n");

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧