首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于文件的格式化读取,该如何处理

2012-03-06 
关于文件的格式化读取程序的读取部分大致如下inti0,j0,k0fscanf( %d|%d|%d ,&i,&j,&k)在文件中,3个

关于文件的格式化读取
程序的读取部分大致如下
int   i=0,j=0,k=0;
fscanf( "%d|%d|%d ",&i,&j,&k);
在文件中,3个数据为一行,每个数据都有可能是空值,但只要值存在即为int型,比如:
4|\N|5
45|98|34
\N|\N|9

用%d直接读,在碰到\N时就成0,以后的就不读了,比如在第三行时结果为:i=0,j=0,k=0,请问如何才能正确读出文件中的数据?

[解决办法]
先读入字符串中,然后分析字符串中的字符,再看是否转换为数字。
[解决办法]
char str[]= "45|98|34 ";
sscanf(str, "%d|%d|%d ", &i,&j,&k);
[解决办法]
1 读取一行到char 数组中,可以使用 fgets
2 判断是否是数字字符,是则输入,否则后移两个字符位置,重复3次

char str[128]={0};
int index;

fgets(...);
index=0;
if(isdigit(str[index])) sscanf(str+index, "%d ", &i) //是数字,读取到i中
else i=0; //否则赋值为0
...

j 和 k 类似处理,
index 移动到 | 后面第一个位置,
判断是否 isdigit,
然后赋值读取 ..

热点排行