[问题] C 读档只读取数字部分(已解决!!)

楼主: cra2y37037 (30奈米)   2019-12-08 01:50:15
开发平台(Platform): (Ex: Win10, Linux, ...)
win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
想请教,C在读取档案时能不能只读取数字的部分,
因为原始开启的txt档中含有非数字的标题等等,
但我只需要取中间数字的部分读入阵列就好,其他的不需要...
google了好久都找不到看得懂的作法QQ
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
FILE *fp2;
fp2=fopen("output1.txt","r");
int sortA[50],sortB[50];
for(i=0;i<50;i++){
fscanf(fp2,"%d",&sortA[i]);
}
for(i=0;i<50;i++){
fscanf(fp2,"%d",&sortB[i]);
}
fclose(fp2);
我是这样读档的,因为我以为读进来的时候有限定%d,
电脑就只会读"数字"部分进来,结果把sortA、sortB印出来是乱码Orz
作者: xxoooxx34567 (xxoooxx345678)   2019-12-08 02:18:00
ascii
作者: Schottky (顺风相送)   2019-12-08 02:43:00
跳过就好啦~fgetc() 拿出来看看,如果不是数字就抛弃是数字的话再用 ungetc() 小心放回去,留给 fscanf() 读
作者: dces4212 (flawless)   2019-12-08 03:52:00
可以举例个非数字部份的字串吗
作者: CoNsTaR ((const *))   2019-12-08 08:49:00
因为阵列没满?
作者: kaneson (Lance)   2019-12-08 09:29:00
%d 碰到非数字会一直卡在原地,循环跑完实际上什么都没读fscanf 会回传"成功的次数",所以失败的时候再用读%c来跳过就好啦
作者: ilms49898723 (LittleBird)   2019-12-08 17:27:00
Maybe something like this:int number;fscanf(fp, "%*[^-0-9]");while (fscanf(fp, "%d", &number) == 1) {fscanf(fp, "%*[^-0-9]");printf("Get %d\n", number);}
作者: Schottky (顺风相送)   2019-12-08 20:01:00
感谢赠币

Links booklink

Contact Us: admin [ a t ] ucptt.com