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

求教一个关于文件读取格式的有关问题

2012-03-16 
求教一个关于文件读取格式的问题文件格式如下:LUD1J2LU3J4JDFC5JP6JXCRT7J8我现在要读取这些字符串,并且判

求教一个关于文件读取格式的问题
文件格式如下:
LUD1
J2
LU3
J4
JDFC5
JP6
JXCRT7
J8
我现在要读取这些字符串,并且判断哪些是字符,哪些是数字,然后把字符赋给一个字符数组,数值赋给一个数值数组,如遇到“\0”就继续下一个字符串的读取。

[解决办法]
fscanf 或者是 fgets 后,
对读取的字符进行判断即可:

char tmp[256]={0}, ch[256]={0};
int i[256]={0}, index, index_i=0, index_c=0;
FILE *fp=fopen(...);

while(!feof(fp))
{
fscanf( fp, "%s ", tmp);
for(index=0; index <strlen(tmp); index++)
if(isdigit(tmp[index]))i[index_i++]=tmp[index]- '0 ';
else ch[index_c++]=tmp[index];
}
...
[解决办法]
1、用CRT的strtok自己切割。
2、用C++的stream切割,使用 ', '和 '\n '作为分隔符。
3、使用regular expression。

isdigit本来就是判断ASCII码是否为 '0 ' ~ '9 ',因此可以用来判断文本串中的字符字母。想把数字转换成int或者double,可以用itoa,itof,或者sscanf( "d ", &x),sscanf( "lf ", &x)。

热点排行