gpt4 book ai didi

c - 字符串解析,纯C

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:41 24 4
gpt4 key购买 nike

我有一个带有允许标记的动态分配数组。在每个 token 用户之后应该写一个数字,它将用于定义变量的值 [$ program --token=99];如何解析最后一个数字?

代码如下:

/* libs */

#define TOKENS_QT 5
#define TOKEN_SIZE 6

static uint8_t GRID_WIDTH;

int main (const int argc, const char* argv[]) {
if (strncmp(argv[1], "--help", 6)) {
/* Here is some info about usage. */
return 0;
} else if (strncmp(argv[1], "--std", 5)) {
/* Here is standard set up. */
} else if (argc == TOKENS_QT + 1) {
char** tokens = malloc(TOKENS_QT * TOKEN_SIZE);
tokens = (char* [TOKENS_QT]) { "--sgw=", "--sgh=", "--sdq=",
"--shq=", "--soq=" };

for (register uint8_t i = 0; i < TOKENS_QT; ++i) {
if (strncmp(argv[i + 1], tokens[i], 6)) {
switch(i) {
case 0: // --sgw=
/* some cool actions to parse --sgw=99, for example, into 99 */
/* some actions to check validity of given number */
GRID_WIDTH = 99;
break;
/* There are other tokens handling. */
}
}
}

free(tokens);
} else {
/* Here is again info about correct usage. */
return 0;
}

return 0;
}

最佳答案

您可以使用sscanf() 来解析它。

sscanf(argv[i + 1], "--sgw=%d", &GRID_WIDTH);

如果你不想把--sgw=放在格式字符串中,你可以这样做:

sscanf(argv[i+1]+6, "%d", &GRID_WIDTH);

添加 6 会跳过参数中的 --sgw= 前缀。

关于c - 字符串解析,纯C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673849/

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