gpt4 book ai didi

c - 在 C 中解析基于列的 ASCII 数据

转载 作者:太空狗 更新时间:2023-10-29 15:39:13 26 4
gpt4 key购买 nike

我正在尝试解析包含固定列数的整数的文本。例如,我的输入文件可能如下所示:

=1=2=3
=4=5=6
=8=910

其中 = 符号代表输入中的空格。 等号不在输入文件中;我只是出于说明目的将其放在那里。每个整数都包含在没有零填充的两列中,因此第三行不是拼写错误:它是 8、9,然后是 10。

标准 sscanf 不起作用,因为它首先消除空格,然后应用格式字符串。例如,我试过:

sscanf(buf, "%2d%2d%2d", &int1, &int2, &int3)

但它最终将第三行解析为 8、91 和 0。

有没有一种方法可以做到这一点而无需手动逐列提取数据?

最佳答案

你可以一个字符一个字符地做:

#include <ctype.h>
#include <stdio.h>

int main(void) {
int val;
char input[] = "=8=910";
char *p = input;

while (*p) {
val = 0;
if (isdigit((unsigned char)*p)) val = *p - '0'; // 1st digit
p++;
val *= 10; // 2nd
val += *p++ - '0'; // digit
printf("val: %d\n", val);
}
return 0;
}

关于c - 在 C 中解析基于列的 ASCII 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com