|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
假定一个字符串ch
1. 为什么在上一次输入完成后不使用ch=getchar()就会跳到下一行?
2. 为什么要用ch接收scanf语句最后输入的回车符?
3. ch=getchar();
while(ch!='#')
{fputc(ch,fp);
putchar(ch);
ch=getchar();
}
为什么删去这个ch=getchar();就会输入无限多个前面从键盘输入的字符
本帖最后由 jackz007 于 2021-1-18 15:17 编辑
scanf() 会遗留换行符在键盘缓冲区,这时,如果用 getchar() 或 gets() 等函数读取键盘输入时,会造成信息错位,解决方法是,在使用 getchar()、gets() 读取键盘输入之前,使用一条 fflush(stdin) 语句清空键盘缓冲区,这样,就可以消除滞留换行符的影响了。
楼主再试试这个代码呢?
- #include<stdio.h>
- #include<stdlib.h>
- int main(void)
- {
- FILE * fp ;
- char ch , filename[20] ;
- printf("请输入所用的文件名 : ") ;
- scanf("%s" , filename) ;
- if((fp = fopen(filename ,"w")) == NULL) {
- printf("无法打开文件\n") ;
- exit(0) ;
- }
- fflush(stdin) ;
- printf("请输入一个准备储存到磁盘的字符串(以#键结束):") ;
- while((ch = getchar()) !='#') fputc(ch , fp) ;
- fclose(fp) ;
- printf(" 信息保存完毕.\n") ;
- }
复制代码
|
|