首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个有getchar()函数的关于文件I/O的程序,引发多个有关问题

2012-02-19 
一个有getchar()函数的关于文件I/O的程序,引发多个问题从键盘输入一些字符,逐个把它们送到磁盘上去,知直到

一个有getchar()函数的关于文件I/O的程序,引发多个问题
从键盘输入一些字符,逐个把它们送到磁盘上去,知直到输入 "# "为止
程序如下
main()
{
FILE   *fp;
char   ch,filename[10];
scanf( "%s ",filename);
if(   (fp=fopen(filename, "a+ "))==NULL)
  {printf( "cannot   open   file\n ");
exit(0);
  }
ch=getchar();/*接受最后输入的回车符*/
ch=getchar();/*接受输入的第一个字符*/
while(ch!= '# ')
{
fputc(ch,fp);
ch=getchar();
}
fclose(fp);
}
疑问一:
ch=getchar();/*接受回车符*/
ch=getchar();/*接受输入的第一个字符*/
while(ch!= '# ')
{
fputc(ch,fp);
ch=getchar();
}
对这段程序,我是这样理解的,比如我输入   abcd回车
第一个ch=getchar()接受了   回车
第二个ch=getchar()接受了   a
然后在while(ch!= '# '),判断ch是否为#,   如果不是的话,把ch写到文件里,
然后ch=getchar();再接受字符,这里我感觉它还是接受a啊
不知道getchar()是怎么做到自动的去接受下一个字符的.

疑问二:
送到文件里的字符在定义的数组filename[10]里存放的情况是怎样的呢
比如我输入:
asdf回车
123回车
#
请问asdf是放在filename[0]里吗?
数组filename[10]的长度对输入的字符的量有影响吗?
数组filename[10]和在磁盘里所建立的文件空间大小有什么联系吗?

疑问三:
假如我输入的文件名字为file.c
请问:程序是不是运行到fp=fopen(filename, "a+ ")这条语句后才在磁盘里建立文件的呢?
因为每次所建的文件我见都是放在和程序同一个目录里,所以所建立的文件的地址能改动吗?能的话,对于上面的程序要如何改动呢




[解决办法]
比如我输入 abcd回车
第一个ch=getchar()接受了 回车
第二个ch=getchar()接受了 a

请注意,第一个 ch=getchar() 接收的是输入 文件名的时候输入的回车符号

热点排行