一个csv文件有两行
A,ABCDE,200,2,12.528,1,0'00'00,0,0,中国
,,,2,13.741,2,0'02'05,20,0,英国
我用sscanf这样分了下,但是,到第二行的时候就会出问题,怎么解决?
sscanf(lineData,"%1[^,],%8[^,],%3[^,],%d,%lf,%d,%8[^,],%d,%1[^,],%6[^,]",cA, cB, cC, &dA, &dB,&dC, cD, &dD, cE, cF);
第二行因为前面3项是空字符,所以,全都取不出来了。这个空字符用sscanf能处理吗?
如果第二行写成[A,B,C,2,13.741,2,0'02'05,20,0,英国]这样的,把前面的补充全了就没问题了。
[首先对数据进行格式化],这个的意思是?因为不想用那个变态的strtok,而且用strtok的话全部分解成字符串后还要把不是数据的再一次atoi,atof,太麻烦。
追答比如说,csv是全部用,进行分隔的,那么你可以把文件中所有的,先替换成 , (逗号前后空格),然后再用sscanf进行解析
追问替换。。。。。。用什么函数呢?原谅我这只菜鸟8,谢谢
追答没有函数,要么你用文本编辑器自动替换功能,要么自己实现一个替换方法
怎么打出来?那个格式化应该怎么写?
追答你可以查ascll 码,看空格的是什么字符,然后打印那个转意字符。
那你用用字符函数打印试试,putchar
具体说说?第二行前三项都是空的,就是说[,]号分割的话前三项都应该是长度为0的空字符串