作者DKer ()
看板C_and_CPP
标题Re: [问题] fscanf 和 fprintf 的问题(字串撷取)
时间Wed Sep 2 23:17:12 2009
主要的问题小弟解决了~来跟各位分享一下
char HELL[350],num[6],date[8],a[6]......;
......
gets(HELL,350,fptr1);
for(i=0;i<6;i++){num[i]=HELL[i];}
for(i=0;i<8;i++){date[i]=HELL[i+6];}
for(i=0;i<6;i++){a[i]=HELL[i+14];}
......
这样数格子去抓到想要的栏位(小弟的资料有固定格式)
感谢各位看过文章的板友m(_ _)m
--
小弟另外遇到一个可能是compiler的问题
因为抓出来的数值需要再去做运算
所以我用 idate = atoi(date) 这样来把字串转换成数值
可是其他项都没问题,唯独date这一栏,我print出来总是很奇怪的数字
printf("%d",idate);
20080101=> 1129358080 20010101=> -151165164
怀疑过是溢位,但我宣告long int也还是一样,不晓得为什麽
而且借用学长的电脑用他惯用的Compiler就是正常的...orz
小弟用的是Dev-C++ 有板友遇过一样的问题吗~?
※ 引述《DKer ()》之铭言:
: 最近试着用C语言在整理一些数据
: 遇到两个小问题小弟想不出答案,来请教各位~"~
: 我的原始资料大概是长这个样子
: 466880200501011026.91028.2 ......
: 46688020050102 999.91030.0 ......
: ......
: 不同颜色代表不同的资料栏位
: 我用C写出这样子的东西(还在测试)
: 希望可以撷取我想要的栏位
: { FILE *fptr1,*fptr2
: char num[6],date[8],a[6],b[6] ...
: ......
: fscanf(fptr1,"%6s%8s%6s",&num,&date,&a);
: fprintf(fptr2,"%s %s %s",num,date,a);
: ......
: return 0;
: }
: 这样子print出来的结果是: 20050101 1026.9
: num消失了
: 如果我把fscanf格式改成这样
: fscanf(fptr1,"%6s,%8s,%6s",&num,&date,&a);
: 那num可以print出来,但是後面的资料都会变成乱码~"~
: 想请教一下这是什麽问题
: scanf的正确格式应该是我写的第一种吧@@?
: 第二个问题是 如第三栏位
: fscanf似乎没有办法读取空白
: 在遇到第二列那种状况的时候我的写法就会记录到999.91
: 同时让後面的资料全都乱掉
: 请问这样的问题有什麽方法可以解决吗~?
: 爬文爬到用gets好像可以读取到空白,但是看起来他好像只能一次性的读取资料
: 不能做到我想要的分栏位?
: 小弟是个C的新手,请大家给我一些方向 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.7.170
1F:→ akasan:你没塞'\0'在字串後面阿~ 09/02 23:23
2F:→ DKer:唔 小弟明天回去翻书...真是对不起推原文的那位板友orz 09/02 23:25