gpt4 book ai didi

c - 需要帮助纠正 - 不稳定的 atoi() 输出

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:34 26 4
gpt4 key购买 nike

我正在尝试将一个 int 字符串转换为一个 int 数组。

这是我的代码:

int premaster1 = 3255859;
char hashString[100];
int hashStringInput[1000];

sprintf(hashString,"%d%d%d",premaster1,300,350);
printf("\n message going inside hash function = %s\n",hashString);


for(i=0;i<strlen(hashString)+1;i++){
hashStringInput[i] = atoi(&hashString[i]);
printf("%d",hashStringInput[i]);
}

这是我的输出:

message going inside hash function = 3255859300350
274089982-18387374102472550215643330548593003505930035093003503003503503503505000

这显然是错误的。我的愿望输出应该是:

message going inside hash function = 3255859300350
3255859300350

我做错了什么,我该如何解决?

最佳答案

您正在将整个字符串传递给 atoi:

"3255859300350" // First loop iteration
"255859300350" // Second loop iteration
"55859300350"
"5859300350"
// And so on...

一种解决方案是在循环中使用临时缓冲区:

char temp [2] = { 0, 0 }; // Second element is for NUL character
temp[0] = hashString[i]; // Copy first char
hashStringInput[i] = atoi(temp);

此外,不要将 +1 与您的 strlen 一起使用,您不想转换 NUL 字符。

关于c - 需要帮助纠正 - 不稳定的 atoi() 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092325/

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