问题:C语言中的问题

woshichenwei 2003-09-17 09:47:20
#include<stdio.h>

void main()
{
FILE *fp;
char ch,filename[100];
scanf("%s",filename);
if((fp = fopen(filename,"w")) == NULL)
{
printf("cannot open file\n");
exit(0);
}
ch = getchar();
while(ch != '#')
{
fputc(ch,fp);
putchar(ch);
ch = getchar();
}
fclose(fp);
}
--------------------------------------------------
hello,world.#
hello,world.
--------------------------------------------------
问题:getchar不是输入单个字符么,应该每次只能输入一个字符啊?为什么可以输入字符串?并且可以完整输出?
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshichenwei 2003-09-21
  • 打赏
  • 举报
回复
我已经明白了,谢谢诸位。
3no 2003-09-18
  • 打赏
  • 举报
回复
while(ch != '#')
{
fputc(ch,fp);
putchar(ch);
ch = getchar();
}
你最后输入的一个字符'#',没有什么问题啊。这段程序不是表达的这个意思?
jjcccc 2003-09-17
  • 打赏
  • 举报
回复
(很长实际没有用getchar之类的标准c库函数了,所以记得不一定准确):
因为getchar()函数术读缓冲区,针对你的代码,读的是控制台键盘缓冲区,它会连续读,直到碰到结束符EOF,\0为止,所以你敲回车后,会输出完整的hello world,最后得到的不是h,应该是你最后输入的一个字符'#'.
woshichenwei 2003-09-17
  • 打赏
  • 举报
回复
对不起我没找到c的论坛。
wjhs 2003-09-17
  • 打赏
  • 举报
回复
你好像方错地方啦!
woshichenwei 2003-09-17
  • 打赏
  • 举报
回复
使用getchar()输入一个字符串的话,比如hello,world,敲回车后得到的只是h,后面的就丢失了呀,为什么还能一次性输出呢??
jjcccc 2003-09-17
  • 打赏
  • 举报
回复
应该每次只能输入一个字符啊?为什么可以输入字符串?
==>没错,是每次只能输入一个字符,但你可以连续输啊!你连续输入的Hello,World就写到文件里去了,有什么不对吗?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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