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

我的问题是:13(ascii)可以作为一个字符用fputc函数存入一文本文件,但是为什么不能以fgetc读取出来???有朋友讲13是回车符;没错,13的确是回车,但它也确实是一个字符呀,它应该可以被读取,并且能以%d的形式打印出来的呀!但现在情况是这样的,若是该文本文件中有三个字符(分别为10,13,67),发现fgetc会直接跳过13这个字符,读取出来的仅仅是10以及67这两个字符。为什么??谢谢大家!

搜索更多相关主题的帖子: ascii 
2007-11-12 19:48
叶柄
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-10-17
收藏
得分:0 

一个很怪的现象 郁闷
代码1:
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");//文件中包含 ASCII 为13的字符......
while ((ch=fgetc(fp))!='\0')
{
printf("%c",ch);
}
fclose(fp);
printf("%c",13);//在这打印个13对应的字符可以实现清屏
return(0);
}

代码2:
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");
while ((ch=fgetc(fp))!='\0')
{
printf("%c",ch);
}
fclose(fp);
printf("%c",13);//这个没有清屏的功能 ...?
return(0);
}

2007-11-12 21:24
vinyie
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-7
收藏
得分:0 
有哪位朋友帮忙回答楼主的问题
2007-11-12 21:27
叶柄
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-10-17
收藏
得分:0 
代码1:
#include <stdio.h>
int main(void)
{

char ch[]="jhfjkdhjhdfjkghdjghjdghjkdh";
printf("%s",ch);// 没有"\n"
printf("%c",13);//13有清屏效果
return(0);
}
代码2:
#include <stdio.h>
int main(void)
{

char ch[]="jhfjkdhjhdfjkghdjghjdghjkdh";
printf("%s\n",ch);\\ 有"\n"
printf("%c",13);//13没有清屏效果
return(0);
}




好像13的清屏功能与某些字符的存在有关

[此贴子已经被作者于2007-11-12 21:31:28编辑过]

2007-11-12 21:30
eakcon
Rank: 1
等 级:新手上路
帖 子:754
专家分:0
注 册:2007-11-7
收藏
得分:0 
C是不是代表运算符+,-,*,/
scanf("%c",&c);
2007-11-13 11:47
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

若是该文本文件中有三个字符(分别为10,13,67),发现fgetc会直接跳过13这个字符


以文本模式打开,是不会读取 '\r'的。
因为,DOS文本模式是以 '\r''\n' 作为换行的,
C 的实现上,读文本文件时会过滤掉 '\r' 。
如果你把 13 改成 10 就没问题的。(MAC 电脑上的文本文件是以 '\r' 换行的)

//--------------------------------------------------------------------
13:'\r'
10:'\n'


[此贴子已经被作者于2007-11-14 11:33:20编辑过]


—>〉Sun〈<—
2007-11-13 11:54
叶柄
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-10-17
收藏
得分:0 

13 是回到本行首 并清除本行内容
哎 为了得到这个结果 可是被人骂了LJ的
所以就造成了不能输出的假象






2007-11-14 22:01
codelet
Rank: 2
来 自:广东深圳
等 级:论坛游民
帖 子:61
专家分:37
注 册:2007-11-6
收藏
得分:0 
c语言里面的文件操作函数,有的会忽略掉空格,有的会忽略回车或者换行,具体是
什么样子的,可以到网上查一查,我也不是很了解

Losing emotion, Finding devotion.
2007-11-16 09:32
快速回复:再议13(ascii)的读取
数据加载中...
 
   



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

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