鱼C论坛

 找回密码
 立即注册
查看: 3799|回复: 1

文件操作02-零基础入门学习C语言61问题

[复制链接]
发表于 2013-1-20 23:56:47 | 显示全部楼层 |阅读模式
1鱼币
#include"stdio.h"
#include"stdlib.h"
void main()
{
FILE *fp;
char ch,filename[20];
scanf("%s",filename);
  if(!(fp=fopen(filename,"wt+")))
  {
   printf("cannot open the file!\n");
    exit(0);
  }
  printf("please input the sentences you want to write:");
  ch=getchar();
  ch=getchar();
  while(ch!=EOF)
  {
   fputc(ch,fp);
   ch=getchar();
  }
  fclose(fp);
}
为什么删除一个ch=getchar();会在文件中出现换行输入?而且输入love fish.com(CTRL+Z)后为什么不中止,还要换行在输入(CTRL+Z)才能结束程序?实在不懂
ch=getchar();
  ch=getchar();
  while(ch!=EOF)
  {
   fputc(ch,fp);
   ch=getchar();
  }是什么语法规则?

最佳答案

查看完整内容

为什么删除一个ch=getchar();会在文件中出现换行输入? 因为你在输入文件名字后 会输入一个回车 '\n' 接着执行 ch = getchar(); 所以 ch = '\n'。 然后进入循环 fput(ch,fp); 文件中就有一个换行了。 ch = getchar( );// 将输入缓冲区中的回车读走 ch = getchar( );//开始读取 你输入的第一个字符 ch=getchar();//去除 回车 ch=getchar();//开始 读取你输入的字符 while(ch!=EOF) { fputc(ch,fp);//将字符写 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-20 23:56:48 | 显示全部楼层
本帖最后由 思无邪 于 2013-1-22 22:10 编辑

为什么删除一个ch=getchar();会在文件中出现换行输入?
因为你在输入文件名字后 会输入一个回车 '\n' 接着执行 ch = getchar(); 所以 ch = '\n'。
然后进入循环 fput(ch,fp);
文件中就有一个换行了。
ch = getchar( );// 将输入缓冲区中的回车读走
ch = getchar( );//开始读取 你输入的第一个字符

ch=getchar();//去除 回车
ch=getchar();//开始 读取你输入的字符
while(ch!=EOF)
  {
   fputc(ch,fp);//将字符写进文件
   ch=getchar();//读取下一个字符
  }

ch != EOF // EOF一般代表文本结束  EOF 是一个宏定义 值是 -1 可是从键盘上输入的ASCII码 字符 不可能有 -1这个值的 能够让你一直输入 要停止就要输入 终止命令了

如果你把这句改成 ch != '$' 就可以用 ‘$’符号来终止输入了。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表