gpt4 book ai didi

c - sscanf 获取剩余字符串的值

转载 作者:太空狗 更新时间:2023-10-29 17:18:18 24 4
gpt4 key购买 nike

我有一个看起来像这样的字符串:

"HELLO 200 Now some random text\n now more text\t\t"

我尝试获取 HELLO、200 和剩余的字符串。不幸的是,该字符串可能包含 \n\t,所以我不能使用 %[^\n\t]

我尝试了以下方法:

char message[MESSAGE_SIZE], response[RESPONSE_SIZE];
int status;
sscanf (str, "%s %d %[^\0]", message, &status, response);

之后变量是

message = "HELLO", status = 200, response = "HELLO 200 Now some random text\n now more text\t\t"

但这包括响应字符串中的 HELLO 200(不应该存在)。有没有一种方法可以直接使用 scanf 而无需 strtok 来实现这一点?

最佳答案

您可以对 unsigned char 类型的整个范围使用 scanset:

char message[MESSAGE_SIZE], response[RESPONSE_SIZE];
int status;
*response = '\0';
sscanf(str, "%s %d %[\001-\377]", message, &status, response);

此外,您应该始终检查 sscanf 的返回值。如果数字后只有空格,则第三个说明符将不匹配任何内容,sscanf 将返回 2,而 response 保持不变。

关于c - sscanf 获取剩余字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35101996/

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