游客:  注册 | 登录 | 搜索 | 帮助
3s地带



标题: 请帮我看下这个c源程序那里有问题?
sish0i
强风
Rank: 3



UID 5111
精华 0
积分 94
帖子 21
现金 84
贡献值 0
阅读权限 30
注册 2007-8-24
请帮我看下这个c源程序那里有问题?
#include<stdio.h>
#include<string.h>
main()
{
FILE *fp;
char ch,filename[10];
printf("enter filename:\n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)

{
printf("cannot open file\n");
exit(0);
}
ch=getchar();
ch=getchar();
while(ch!="#")
{
fputc(ch,filename);putchar(ch);
ch=getchar();
}
fclose(fp);
getch();
}

运行是显示file cannot open

顶部
xKX01p
疾风
Rank: 4Rank: 4



UID 3864
精华 0
积分 155
帖子 45
现金 145
贡献值 0
阅读权限 40
注册 2007-8-24
你给出的这段程序错误很多:

1、while(ch!="#") 语法错误:
ch是一个char类型的变量,不可以用它来直接和字符串做比较。"#"是一个字符串。

2、fputc(ch,filename);参数错误:
fputc函数的第二个参数是FILE *类型的。你应该用fp来代替filename,具体正确的代码应该是:
fputc(ch,fp);

3、getch(); 低级错误:
这个根本不是函数,它的正确写法是:getchar();

4、最后说说为什么会出现你所说的“
运行是显示file cannot open”
阅读你的代码,它的本意是:让用户输入一个文件名,程序负责打开这个文件,并继续后续的运算。而打不开文件是因为,通常用户输入的文件名只是一个文件的名字,而没有包含文件所在的路径,所以,就出现你说的报错情况。比如:
用户输入:readme.txt,虽然这个文件就在当前目录下,但你没有做路径的处理,打开文件肯定失败。如果你的程序在"d:\txt"下,你就应该为用户输入的文件名的前面添加这个路径。最后用于打开文件的路径应该是:"d:\\txt\\readme.txt"。

理解了吗?楼主。

  
顶部
ksfrff
疾风
Rank: 4Rank: 4



UID 3948
精华 0
积分 278
帖子 68
现金 268
贡献值 0
阅读权限 40
注册 2007-8-24
if((fp=fopen(filename,"r"))==NULL)
改成
if((fp=fopen(filename,"w"))==NULL)

顶部


 
当前时区 GMT+8, 现在时间是 2009-1-9 10:38 清除 Cookies - 联系我们 - 3S地带 - Archiver - WAP - 赣ICP备07006302号
Powered by Discuz! 5.5.0  © Processed in 0.026194 second(s), 6 queries , Gzip enabled