求教一个关于文件读取格式的问题
文件格式如下:
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)。