gpt4 book ai didi

C - 使用其他分隔符分隔字符串?

转载 作者:行者123 更新时间:2023-11-30 21:27:57 26 4
gpt4 key购买 nike

我有一个格式为“B1,B3,B4,B6”的字符串,并且希望将每个数字分配给一个变量,即 num1 =“1”、num2 =“3”、num3 =“4”和 num4 =“6”。 sscanf 的这个实现有效吗?

char *num1;
char *num2;
char *num3;
char *num4;
sscanf(str, "B%s,B%s,B%s,B%s", num1, num2, num3, num4);

最佳答案

不,这确实不是一个好方法。如果您只想要数字 numbers,即作为普通 int 值,则使用 "%d" 转换运算符,并让您的变量是普通的 int 变量,然后使用地址运算符 & 将其传递给 sscanf。如

int num1;
int num2;
int num3;
int num4;
sscanf(str, "B%d,B%d,B%d,B%d", &num1, &num2, &num3, &num4);
<小时/>

如果您想要将数字作为字符串,则使用数组而不是指针:

char num1[2];  // Two characters is enough for a single-character string, plus terminator
char num2[2];
char num3[2];
char num4[2];
sscanf(str, "B%1s,B%1s,B%1s,B%1s", num1, num2, num3, num4);

格式“%1s”告诉sscanf仅读取signle字符。

<小时/>

除此之外,您应该确保 sscanf 调用实际上正确地解析了输入。这可以通过检查 sscanf 来完成返回:

if (sscanf(str, "B%d,B%d,B%d,B%d", &num1, &num2, &num3, &num4) == 4)
{
// All okay
}
else
{
// Something went wrong
}

关于C - 使用其他分隔符分隔字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46848728/

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