C 返回奇怪值的atoi()
我从C 返回奇怪值的atoi(),c,strtok,atoi,C,Strtok,Atoi,我从atoi命令中得到了一些非常奇怪的行为。我试图在[1:2]格式的范围外找到2个值 正在创建的字符串使用动态字符串分配宏完成(如果Sasprintf抛出) 然而,它将在项目结束时从文件中读取。 无论如何,如果token和token2的值正确,我似乎正确地解析了我的字符串。然而,我很困惑,为什么在token2上调用atoi会给我一个含糊不清的答案。此外,我发现在这期间,strtok被弃用了,我只是还没有费心切换它,直到我解决了这个bug char *token; char *token2; i
atoi
命令中得到了一些非常奇怪的行为。我试图在[1:2]格式的范围外找到2个值
正在创建的字符串使用动态字符串分配宏完成(如果Sasprintf抛出)
然而,它将在项目结束时从文件中读取。
无论如何,如果token
和token2
的值正确,我似乎正确地解析了我的字符串。然而,我很困惑,为什么在token2
上调用atoi
会给我一个含糊不清的答案。此外,我发现在这期间,strtok
被弃用了,我只是还没有费心切换它,直到我解决了这个bug
char *token;
char *token2;
int lsb = 0;
int msb = 0;
char *str = NULL;
Sasprintf(str,"[4:0]");
token = strtok(str,"[");
if(token != NULL)
{
token = strtok(token,":");
msb = atoi(token);
printf("%d\n", msb);
token2 = strtok(NULL,"]");
puts(token2);
lsb = atoi(token2);
printf("%d\n",token2);
}
输出
四,
0
19853443
我认为,你需要改变
printf("%d\n",token2);
到
token2
是一个char*
,您不能使用%d
打印它。援引
也就是说,始终检查
strtok()
的返回值是否为NULL。另外,是atoi()的更好的替代品。我认为,您需要改变
printf("%d\n",token2);
到
token2
是一个char*
,您不能使用%d
打印它。援引
也就是说,始终检查
strtok()
的返回值是否为NULL。另外,是atoi()的更好的替代品。我认为,您需要改变
printf("%d\n",token2);
到
token2
是一个char*
,您不能使用%d
打印它。援引
也就是说,始终检查
strtok()
的返回值是否为NULL。另外,是atoi()的更好的替代品。我认为,您需要改变
printf("%d\n",token2);
到
token2
是一个char*
,您不能使用%d
打印它。援引
也就是说,始终检查strtok()
的返回值是否为NULL。此外,它还是atoi()
的更好替代品
这不是打印字符串的方式,请使用:
printf("%s\n",token2);
或
打印转换结果
这不是打印字符串的方式,请使用:
printf("%s\n",token2);
或
打印转换结果
这不是打印字符串的方式,请使用:
printf("%s\n",token2);
或
打印转换结果
这不是打印字符串的方式,请使用:
printf("%s\n",token2);
或
打印转换结果。
strtok不推荐使用
…如何使用?我猜是因为它不是可重入的printf(“%d\n”,token2)代码>应该是printf(“%d\n”,lsb)代码>,不是吗?否则,您将打印出指针的整数表示形式。从什么时候开始,strtok被弃用了?@SouravGhosh@haccksman strtok=>这个接口已被strep(3)淘汰。
strtok被弃用了
…如何?我猜是因为它不是可重入的printf(“%d\n”,token2)代码>应该是printf(“%d\n”,lsb)代码>,不是吗?否则,您将打印出指针的整数表示形式。从什么时候开始,strtok被弃用了?@SouravGhosh@haccksman strtok=>这个接口已被strep(3)淘汰。
strtok被弃用了
…如何?我猜是因为它不是可重入的printf(“%d\n”,token2)代码>应该是printf(“%d\n”,lsb)代码>,不是吗?否则,您将打印出指针的整数表示形式。从什么时候开始,strtok被弃用了?@SouravGhosh@haccksman strtok=>这个接口已被strep(3)淘汰。
strtok被弃用了
…如何?我猜是因为它不是可重入的printf(“%d\n”,token2)代码>应该是printf(“%d\n”,lsb)代码>,不是吗?否则,您将打印出指针的整数表示形式。从什么时候开始strtok
不推荐使用?@SouravGhosh@haccksman strtok
=>这个接口已被strep(3)淘汰。
是的,真是愚蠢的错误。我只是在寻找一些行为上的东西,而我却很笨!谢谢你,真是愚蠢的错误。我只是在寻找一些行为上的东西,而我却很笨!谢谢你,真是愚蠢的错误。我只是在寻找一些行为上的东西,而我却很笨!谢谢你,真是愚蠢的错误。我只是在寻找一些行为上的东西,而我却很笨!谢谢