gpt4 book ai didi

c - sscanf() double 和字符串

转载 作者:行者123 更新时间:2023-12-05 01:27:16 25 4
gpt4 key购买 nike

我是编程界的新手,所以如果这是一个常见错误,请原谅我。

我正在尝试从一个输入字符串中扫描 3 个 double 值和 3 个字符串,但在第二个值之后它不会继续。

double total_weight_kg(char *s, int Length) {
double weights[3];
char units[3];
int test = sscanf(s, "%lf, %s, %lf, %s, %lf, %s",
&weights[0], &units[0],
&weights[1], &units[1],
&weights[2], &units[2]);
printf("%i\n", test);
printf("%s\n", &units[0]);

int main(void) {
total_weight_kg("5, g, 1, t, 175, kg", 3);
return 0;

第一次打印输出 2,第二次打印 g。

此外,我想在循环中比较 units[i],但似乎也无法正常工作。

for (int i = 0; i < Length; i++) {
w = weights[i];
if (strcmp(units[i], "kg") == 0) {
weight += w;
}
}

希望你能帮我找到解决这个问题的方法,

编辑:现在一切都按预期工作。非常感谢您的帮助。 ( 19[^,] 是一个主要问题)

最佳答案

您的代码中存在一些问题:

  • 要将字符串扫描成单位,您必须将其定义为char 的二维数组:

    char units[3][20];
  • 您应该按照 user3386109 的建议,修改 scanf 格式以停止对 和空格的单词解析。

  • 同时修改 printf 以传递数组而不是其地址。

修改后的代码:

double total_weight_kg(char *s, int Length) {
double weights[3];
char units[3][20];
int test = sscanf(s, "%lf, %19[^, \n], %lf, %19[^, \n], %lf, %19[^, \n]",
&weights[0], units[0],
&weights[1], units[1],
&weights[2], units[2]);
printf("%i\n", test);
printf("%s\n", units[0]);
...
}

int main(void) {
total_weight_kg("5, g, 1, t, 175, kg", 3);
return 0;
}

关于c - sscanf() double 和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970451/

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