设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
文件结束符。。。。
返回列表
查看:
1020
|
回复:
9
文件结束符。。。。
[复制链接]
qing
qing
当前离线
积分
3315
IP卡
狗仔卡
发表于 2003-10-30 18:18:22
|
显示全部楼层
|
阅读模式
#include <stdio.h>
main(void)
{
FILE *fpi;
char ch=0;
fpi=fopen("http.c","r");
for(;ch!=EOF ; )
{
fscanf(fpi,"%c",&ch) ;
printf("%c",ch);
}
fclose(fpi);
}
复制代码
错在哪里。。。
运行了不能停下来
。。。。。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
quanliking
quanliking
当前离线
积分
2333
IP卡
狗仔卡
发表于 2003-10-30 20:05:58
|
显示全部楼层
问题出在 fscanf(fpi,"%c",&ch); 函数,具体搞不清为什么,换成其它就好了。
还有 EOF 一般等于 -1, char ch=0; 放不下,改成 int ch = 0;
for(;ch!EOF;)
复制代码
这种结构不太美观,用 while(ch!=EOF) 或 do {} while (xxxx) 要好点。
回复
支持
反对
使用道具
举报
显身卡
keenor
keenor
当前离线
积分
168
IP卡
狗仔卡
发表于 2003-10-30 20:36:22
|
显示全部楼层
#include <stdio.h>
main(void)
{
FILE *fpi;
char ch=0;
int res = 0;
fpi=fopen("http.c","r");
for(;res!=EOF; )
{
res = fscanf(fpi,"%c",&ch);
printf("%c",ch);
}
fclose(fpi);
}
回复
支持
反对
使用道具
举报
显身卡
qing
qing
当前离线
积分
3315
IP卡
狗仔卡
楼主
|
发表于 2003-10-30 21:14:10
|
显示全部楼层
谢了。。。
回复
支持
反对
使用道具
举报
显身卡
qing
qing
当前离线
积分
3315
IP卡
狗仔卡
楼主
|
发表于 2003-10-30 21:42:48
|
显示全部楼层
不会输出行符。。
#include <stdio.h>
main(void)
{
FILE *fpi;
char ch=0;
int res = 0;
fpi=fopen("http.c","r");
res=fscanf(fpi,"%c",&ch);
for(;res!=EOF; )
{
printf("%c",ch);
res=fscanf(fpi,"%c",&ch);
}
fclose(fpi);
}
复制代码
回复
支持
反对
使用道具
举报
显身卡
无双
无双
当前离线
积分
1799
IP卡
狗仔卡
发表于 2003-10-30 22:26:08
|
显示全部楼层
EOF是不保存在文件中的
所以想从文件中读是读不出来的
http://loveunix.onlinecq.com/index.php?showtopic=4298
在上面地址我也说明了一下
回复
支持
反对
使用道具
举报
显身卡
keenor
keenor
当前离线
积分
168
IP卡
狗仔卡
发表于 2003-10-31 08:46:47
|
显示全部楼层
qing,那段代码是不是老的unix书上的?据说很老的unix上的文本文件最后是有eof的表示结束的。不知哪位说一下?谢谢!
回复
支持
反对
使用道具
举报
显身卡
quanliking
quanliking
当前离线
积分
2333
IP卡
狗仔卡
发表于 2003-10-31 12:55:06
|
显示全部楼层
为什么用 fgetc 代替 fscanf 就没问题了呢?而其它都不变。
回复
支持
反对
使用道具
举报
显身卡
r2007
r2007
当前离线
积分
166
IP卡
狗仔卡
发表于 2003-10-31 14:47:07
|
显示全部楼层
最初由 quanliking 发表
为什么用 fgetc 代替 fscanf 就没问题了呢?而其它都不变。
fgetc在到达文件尾或出错时返回EOF.
fscanf会一直等到有字符来到,才返回。
回复
支持
反对
使用道具
举报
显身卡
无双
无双
当前离线
积分
1799
IP卡
狗仔卡
发表于 2003-10-31 23:17:56
|
显示全部楼层
据说很老的unix上的文本文件最后是有eof的表示结束的。不知哪位说一下?谢谢
No
you are wrong
the char is from 0-255
if the file is a binary file
then these value may occur in it
so ,write a char in the file to indicate EOF is impossable
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
shell进阶应用、shell编程
Redhat/Fedora/CentOS Linux
Slackware Linux
SuSE Linux
BSD 讨论专题
Debian Linux
LinuxSir 论坛管理
Archlinux讨论区
硬件设备 Linux 驱动
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表