gpt4 book ai didi

c - 使用 atoi

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

我一直在从几个不同的角度攻击 atoi,试图一次从字符串中提取 1 位整数。

问题 1 - 调整数组大小
这个 50 个字符的数组的大小应该是 50 还是 51(以考虑空终止符)?

char fiftyNumbersOne[51] = "37107287533902102798797998220837590246510135740250";

问题 2 - atoi 输出

我在这里做错了什么?

char fiftyNumbersOne[51] = "37107287533902102798797998220837590246510135740250";
int one = 0;
char aChar = fiftyNumbersOne[48];
printf("%c\n",aChar);//outputs 5 (second to last #)
one = atoi(&aChar);
printf("%d\n",one);//outputs what appears to be INT_MAX...I want 5

最佳答案

问题一

该数组的长度应为 51。但您可以通过简单地执行 char fiftyNumbersOne[] = "blahblahblah"; 来避免手动计算。

问题2

aChar 不是指向原始字符串的指针;它只是一个孤立的 char 漂浮在内存中的某个地方。但是 atoi(&aChar) 将其视为指向以 null 结尾的字符串的指针。它只是遍历内存,直到恰好在某处找到 0,然后将找到的所有内容解释为字符串。

你可能想要:

one = aChar - '0';

这依赖于 09 的字符值保证是连续的这一事实。

关于c - 使用 atoi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836206/

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