作者cra2y37037 (30奈米)
看板C_and_CPP
标题[问题] C 读档只读取数字部分(已解决!!)
时间Sun Dec 8 01:50:15 2019
开发平台(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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.234.72 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1575741020.A.C4A.html
※ 编辑: cra2y37037 (110.50.176.41 台湾), 12/08/2019 01:54:58
1F:推 xxoooxx34567: ascii12/08 02:18
印出来也不是ascii code的部份 我才觉得很疑惑QQ
※ 编辑: cra2y37037 (110.50.176.41 台湾), 12/08/2019 02:26:28
2F:→ Schottky: 跳过就好啦~ 12/08 02:43
3F:→ Schottky: fgetc() 拿出来看看,如果不是数字就抛弃 12/08 02:44
4F:→ Schottky: 是数字的话再用 ungetc() 小心放回去,留给 fscanf() 读 12/08 02:44
用这个方法成功解决了!!万份感激QQ
已寄出200p红包了~感谢感谢orz
5F:推 dces4212: 可以举例个非数字部份的字串吗 12/08 03:52
6F:推 CoNsTaR: 因为阵列没满? 12/08 08:49
7F:推 kaneson: %d 碰到非数字会一直卡在原地,回圈跑完实际上什麽都没 12/08 09:29
8F:→ kaneson: 读 12/08 09:29
9F:推 kaneson: fscanf 会回传"成功的次数",所以失败的时候再用读%c来跳 12/08 09:34
10F:→ kaneson: 过就好啦 12/08 09:34
11F:推 ilms49898723: Maybe something like this: 12/08 17:27
12F:→ ilms49898723: int number; 12/08 17:28
13F:→ ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
14F:→ ilms49898723: while (fscanf(fp, "%d", &number) == 1) { 12/08 17:28
15F:→ ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
16F:→ ilms49898723: printf("Get %d\n", number); 12/08 17:28
17F:→ ilms49898723: } 12/08 17:28
※ 编辑: cra2y37037 (125.231.127.164 台湾), 12/08/2019 19:36:44
※ 编辑: cra2y37037 (125.231.127.164 台湾), 12/08/2019 19:37:26
18F:推 Schottky: 感谢赠币 12/08 20:01