| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5409 人关注过本帖, 1 人收藏
标题:fgetc函数
只看楼主 加入收藏
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏(1)
 问题点数:0 回复次数:11 
fgetc函数

本人有两个C程序,程序非常简单:程序一向file.txt中写入5个字符,5个字符ascii均为13;程序二为从file.txt中读取字符。两个程序均能正常运行,按分析,程序二应该打印五个13,但是却得不到这个结果,有哪位朋友帮我解释下这个特殊的‘13’!谢谢!(注:若将程序一中fputc(13,,fp)的参数13改为其他ascii值均没有此问题出现,包括10.)
#include <stdio.h>
int main(void)
{
FILE *fp;
int i=0;
fp=fopen("file.txt","w");
while (i<5)
{
fputc(13,fp);
i++;
}
fclose(fp);
}

程序二:
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");
while ((ch=fgetc(fp))!=EOF)
printf("%d\n",ch);
getch();
fclose(fp);
}

搜索更多相关主题的帖子: fgetc 函数 
2007-11-11 21:15
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
收藏
得分:0 
把程序二中的getch();删掉之后结果如图 ,是不是你要的结果。
图片附件: 游客没有浏览图片的权限,请 登录注册


择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-11 21:30
yixiaowz
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-11-3
收藏
得分:0 
同样的结果!!!望高人指点!

2007-11-11 21:45
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
fp=fopen("file.txt","w");
表示以文本格式写入文件,而13表示换行符...
用二进制方式写入/读取文件就OK了

My BlogClick Me
2007-11-11 21:48
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 
谢谢版主。我的问题是这样的:一个文本文件里面有若干字符,以ascii表示,如45,13,67...,当从这个文件里读取字符时,发现13这个字符被直接跳过,不予读取,我想不通其中原由。其实这和上面是同样的问题,为什么13可以被存储,而不能被读取呢?为什么会被跳过呢?
2007-11-11 22:19
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用vinyie在2007-11-11 22:19:15的发言:
谢谢版主。我的问题是这样的:一个文本文件里面有若干字符,以ascii表示,如45,13,67...,当从这个文件里读取字符时,发现13这个字符被直接跳过,不予读取,我想不通其中原由。其实这和上面是同样的问题,为什么13可以被存储,而不能被读取呢?为什么会被跳过呢?

13 这个字符是什么搂主知道吗?(13 即 '\r')

[此贴子已经被作者于2007-11-11 23:00:29编辑过]


—>〉Sun〈<—
2007-11-11 22:55
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

int main(void)
{
FILE *fp;
int i = 0;
fp = fopen("file.txt","w");
while(i < 5) /* 这个循环写入 5 个 '\r' */
{
fputc(13,fp); /* 13 是 '\r' */
i++;
}
fclose(fp);
}

程序二:
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");
while ((ch=fgetc(fp))!=EOF) /* 用这个循环读取程序1写入的字符 */
printf("%d\n",ch); /* 程序1写入了5个 '\r' */
getch();
fclose(fp);
}


—>〉Sun〈<—
2007-11-11 23:00
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 

谢谢六楼,的确,要是以%C打印字符的方式打印的话,啥也看不到,但我现在是以%d的格式打印呀,应该显式13这个数字的!是不是fgetc函数本身对于13(ascii)根本就不予读取呢???

2007-11-11 23:01
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 
我的意思是这样的,不管13(ascii)是回车也好,换行也罢,它无非就是一个ascii码值,按理以%d形式一定可以打印出来的,现在的问题就是没有显示13这个结果。为什么!
2007-11-11 23:09
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 
谁能帮我解决这个难题,谢谢。
2007-11-11 23:48
快速回复:fgetc函数
数据加载中...
 
   



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

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