| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1828 人关注过本帖
标题:[求助]为什么要接收 回车符??
取消只看楼主 加入收藏
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:4 
[求助]为什么要接收 回车符??

//从键盘输入一些字符, 逐个把它们送到磁盘上去, 直到输入一个"#"为止
#include "stdio.h"

int main(int argc, char *argv[])
{
FILE *fp;
char ch, filename[10];
scanf ("%s", filename);

if ((fp = fopen (filename, "w")) == NULL)
{
printf ("can't open file \n");
exit (0);
}
ch = getchar (); //此语句用来接收在执行scanf语句时最后输入的回车符, 为什么要接收 回车符
ch = getchar (); //此语句用来接收输入的第一个字符, 为什么要接收第一个字符 while loop中不是已经有getchar了吗>.
//把上面的两句删除掉,只是当输入filename后,多了一次换行.结果也是对的.

while (ch != '#')
{
fputc (ch, fp);
putchar (ch);
ch = getchar ();
}
fclose (fp);

getch ();
return 0;
}

[此贴子已经被作者于2006-5-11 19:40:47编辑过]

搜索更多相关主题的帖子: 回车 
2006-05-11 18:40
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 

//将一个磁盘文件中的信息复制到另一个磁盘文件中.
#include "stdio.h"

int main(int argc, char *argv[])
{
FILE *in, *out;
char ch, infile[10], outfile[10];

printf ("Enter the infile name : \n");
scanf ("%s", infile); //提示输入要COPY的源文件名称.
printf ("Enter the outfile name : \n");
scanf ("%s", outfile); //提示输入要COPY为的新文件名称.

if ((in = fopen (infile, "r")) == NULL) //判断要COPY的文件是否存在, 为什么我输入一个在当前目录中不存在的文件名也不会提示can't open file.
{
printf ("can't open file \n");
exit (0);
}
if ((out = fopen (outfile, "w")) == NULL)//这句的意思是判断要创建的新文件是否成功吗?
{
printf ("can't open file \n");
exit (0);
}

while (! feof (in)) //判断要COPY的新文件是否结束
fputc (fgetc (in), out);
printf("1 file copied!");

fclose (in);
fclose (out);

getch ();
return 0;
}

2006-05-11 18:43
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
楼上的程式,如果a.txt文件中包括""字符, 则把a.txt copy to b.txt时,""字符后面的内容都不能被COPY. 为什么? ""字符表示结束的标志吗?

如附件.

uME7Ubr7.txt (994 Bytes)

[此贴子已经被作者于2006-5-11 19:42:12编辑过]

2006-05-11 19:39
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
第一个ch = getchar (); //此语句用来接收在执行scanf语句时最后输入的回车符,
第二个ch = getchar (); //此语句用来接收输入的第一个字符,

=========
还是不太理解上面的两句ch = getchar (); .
执行第一个ch = getchar (); 后难道回车符就不在缓冲区内了吗? 那如果是, 第二个ch = getchar (); 接收的第一个字符应试也不会写入文件了.

第二个ch = getchar (); 为什么要接收第一个字符. while loop中不是已经有getchar了吗>.
2006-05-12 13:30
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 

谢谢版主.
#include "stdio.h"

int main (void)
{
char str;
FILE *fp;

if ((fp = fopen ("test.txt", "w")) == NULL)
{
printf (" can't create TXT file \n");
exit (0);
}

//str = getchar (); //在这个程式中终于搞清楚这两个和while loop中的str = getchar ();作用.
str = getchar ();

while ( str != '!')
{
if (str >= 'a' && str <= 'z')
str = str -32;

fputc (str, fp);
putchar (str);
str = getchar ();
}
fclose (fp);

getch ();
return 0;
}

[此贴子已经被作者于2006-5-13 9:02:17编辑过]

2006-05-13 08:00
快速回复:[求助]为什么要接收 回车符??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036668 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved