判断的时候和已经存起来的separate_sign和float_sign比较
因为基本上根据前几行就能判断出分隔符和小数符,
增加后续的检测速度
本次数值检测标志end,每次开始前要把end标志为0,表示未结束
小数标识符float_sign
numinline=100000; 每一行数值个数,初试化为很大
lineoneflags=1; 用来标识是否是第一行,第一行结束后设置为-1,只用一次
下面是非第一行每行个数为1的代码
//把每一行只有一个数值的放后面是因为基本上每一行都是超过1个数值的,优先判断一行有多个数值的。
if (numinline==1) {
end=0; //表明要进入检测数值
while(end==0) {
getchar();
//只有一行只需要检测换行符就可以了,因为能进入一行循环的肯定是没有sepatate_sign的
if (getchar没有出现特殊字符) {
记录检测到的数值;
continue;
}
else if(getchar=float_sign) {
记录检测到的数值
continue;
}
//数字出现概率高,把换行符的检测放最后面
else if (getchar=='\n') {
num++;
end=1; //标志这次数值检测已经结束
}
else { //也有可能之前检测出每一行只有一个数值的时候并没有检测出有小数
float_sign=getchar;
continue;
}
}
剩下的事楼主自己做吧
[ 此帖被rqzrqh在2009-07-23 10:59重新编辑 ]