当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : c语言文件读取
帖子发表于 : 2009-04-09 17:01 

注册: 2009-04-01 8:50
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
我的一个程序读取一个txt文件,在Windows下能得到正确的结果,但在Ubuntu下却不行
读取的文件格式如下: .v 50 51 52 53 54 55 56 57 58 59 60
我用fgetc 读取,当读到换行符时结束循环,但总得不到正确的结果,在60后面还能读到0 0 0 1 0 0。。。
是不是文件格式不同啊,在linux下怎样查看二进制文件啊?
期待回答


页首
 用户资料  
 
2 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 17:35 
头像

注册: 2008-04-07 17:36
帖子: 4010
地址: 泰安人在阜新
送出感谢: 0 次
接收感谢: 0 次
可能是因为win的换行格式和unix不同,win下是一个换行加个回车,unix只有一个换行
贴出代码来瞧瞧


_________________
宇宙数学物理 sssssssss Ubuntu 桌面培训 sssssssss 问打包的问题之前先看
和我一样的新手请看,我看过了,腰不酸了,腿不疼了,上楼也有劲了
想去IRC的点这里——一个比QQ群好N多的东西


页首
 用户资料  
 
3 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 17:54 

注册: 2009-01-05 11:42
帖子: 57
送出感谢: 0 次
接收感谢: 0 次
od 先看看原始文件的数据是什么吧。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 19:02 

注册: 2009-04-01 8:50
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
读入的文件:
节选
.i 16
.o 1
.p 10917
.v 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

C 语言代码:
ch=fgetc(fp);

while ((ch1=fgetc(fp))!=EOF)

{

if (ch==0x2e&&ch1==0x76) /*当读到文件是.v的时候,记录下后面的节点标号*/

{ ++n;

while ((ch2=fgetc(fp))!=0x0a) /*当不是遇见换行符时继续循环*/

{

fgets(str,3,fp);

save=atoi(str);

input_pad_num[i]=save;

i++;

printf("the record is %d\n",save);

}

}

以上代码在win 下完全没问题的。。。可是在Linux下不行。请赐教


页首
 用户资料  
 
5 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 19:09 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
用二进制方式打开文件试试


_________________
目前负债150多万


页首
 用户资料  
 
6 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 19:15 

注册: 2009-04-01 8:50
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:
用二进制方式打开文件试试

尝试过了 不行阿


页首
 用户资料  
 
7 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 19:26 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
chuzhufei 写道:
xhy 写道:
用二进制方式打开文件试试

尝试过了 不行阿


你的文件必须保存成 \r\n 或者 \n , 读到时候方法要一致

windows记事本保存的文件默认是\r\n的


_________________
目前负债150多万


页首
 用户资料  
 
8 楼 
 文章标题 : Re: c语言文件读取
帖子发表于 : 2009-04-09 20:08 

注册: 2009-04-01 8:50
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:
chuzhufei 写道:
xhy 写道:
用二进制方式打开文件试试

尝试过了 不行阿


你的文件必须保存成 \r\n 或者 \n , 读到时候方法要一致

windows记事本保存的文件默认是\r\n的

哦 成功了 谢谢
把ch2=fgetc(fp)==0x0d 就行了。。。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译