gpt4 book ai didi

c - 在C中如何将字符串的一部分转换为int?

转载 作者:行者123 更新时间:2023-11-30 20:10:15 25 4
gpt4 key购买 nike

我有一个代码行如下,

char conv[20]="score: 34";

我想提取“conv”字符串中的数字(34)并将其转换为整数。我使用了“atoi”功能。但它给出的结果是 0。

printf("score: %d\n",atoi(conv)); //this prints 'score: 0'

有人可以帮我将该字符串中的数字转换为整数吗?

最佳答案

如果无法执行转换,

atoi() 将返回 0。看here .

字符串“score: 34”无法转换为有效的int。所以atoi()返回0

如果字符串中的 34 之后没有其他内容,您可以这样做

printf("score: %d\n",atoi(conv + 7));

这将给出34conv + 7 指向字符串"34"。它相当于 conv + strlen("score: ")

使用strtol()在这里代替 atoi() 可能会更好。

您可以使用 strtol() 更轻松地找到到底出了什么问题。

你可以像这样使用它

long rv=strtol(conv, &ptr, 10);

其中 ptr 的类型为 char * 或只是

rv=strtol(conv, NULL, 10);

如果conv在这里是“score:34”,则返回0并且ptr将指向start 转化

请注意,strtol() 返回一个 long,而不是 int

如果int的范围小于long的范围,您可能需要检查返回值是否大于最大的int > 对于有符号整数来说是INT_MAXINT_MAX 位于 limits.h 中。

如果由于字符串中的数字太大而无法用long表示而发生溢出,errno将被设置为ERANGE(它位于 errno.h 中)。

long rv=strtol(str, NULL, 10);
if(rv>INT_MAX || rv<INT_MIN || errno==ERANGE)
{
perror("something is wrong.");
}

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

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