gpt4 book ai didi

c - 使用 sscanf 返回值

转载 作者:太空狗 更新时间:2023-10-29 16:13:03 25 4
gpt4 key购买 nike

请问如何使用sscanf获取值043、21.45、45.65、9.34、3.46。

Parameters: 43 VALUES FROM 0000:0000 (043)
Name_8:(Temp=21.45,Hum=45.65,AR=9.34,Volt=3.46V)

直到 FROM 我知道代码是这样的

char str[20];
sscanf(buff,"%*s %*d %*s %s",str);
printf("Results %s\n",str);

这让我回来了

Results FROM

但我不知道如何继续使用 sscanf。不是很熟,不知道怎么转义(),_,:等字符

最佳答案

输入中没有改变的部分可以按字面意思指定,你不需要 %*s 来跳过它们。可以使用您使用的 %*d 和 %*s 跳过变体部分。运行这个

#include <stdio.h>

int main (void)
{
char buff[] = "Parameters: 43 VALUES FROM 0000:0000 (043)\n"
"Name_8:(Temp=21.45,Hum=45.65,AR=9.34,Volt=3.46V)";
int tag;
float Temp, Hum, AR, Volt;
int n;

n = sscanf (buff, "Parameters: %*d VALUES FROM %*d:%*d (%d) "
"Name_%*d:(Temp=%f,Hum=%f,AR=%f,Volt=%fV)",
&tag, &Temp, &Hum, &AR, &Volt);
if (n == 5) {
printf ("tag = %d, Temp = %f, Hum = %f, AR = %f, Volt = %f\n",
tag, Temp, Hum, AR, Volt);
} else {
printf ("Couldn't scan all items (converted %d).\n", n);
}
return 0;
}

会输出

tag = 43, Temp = 21.450001, Hum = 45.650002, AR = 9.340000, Volt = 3.460000

始终检查 sscanf 的返回值!您不想继续使用垃圾值。请注意,格式中的单个空格会跳过任意​​数量的空格,因此 ) 之后的空格会跳过输入中的换行符。

关于c - 使用 sscanf 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912164/

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