gpt4 book ai didi

c - 将字符串的第一部分转换为 C 中的数字

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:50 25 4
gpt4 key购买 nike

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

ATOM 3760 CB GLU B 208 21.707 20.319 45.764 0.0000 2.2350

我从一个文件中读取它。

我想把 208 变成一个整数。请注意,该数字可能是 11208,在这种情况下,208 之前的两个空格将被占用。我正在尝试以下操作,但我一直遇到设置错误。想法?

char* line = NULL;
size_t len = 0;

int res_num;

while (getline (&line, &len, fp) != -1)
{

sprintf(res_num,"%5.1d",atoi(line+22));
printf("%d\n",res);

}

最佳答案

由于传递的是未初始化整数 (res_num) 的值,您遇到了段错误,其中 sprintf() 需要目标地址字符串缓冲区。

您可以使用 strtol() 将字符串转换为整数,或使用 atoi()。这不是问题所在,问题出在 sprintf() 调用的随机内存覆盖上。

此外,printf() 引用了一个未知变量 res;你确定上面的代码已经编译了吗?

您可以删除 sprintf() 并只使用 printf():

printf("found %d\n", atoi(line + 22));

或者,当然,将数字存储在变量中以供进一步处理:

const int res = atoi(line + 22);

printf("by the way, res=%d\n", res);

关于c - 将字符串的第一部分转换为 C 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272510/

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