我一直在从几个不同的角度攻击atoi,试图从一个字符串一次提取整数.
问题1 - 调整数组的大小
这个50个字符的数组是50或51的大小(考虑空终止符)?
char fiftyNumbersOne[51] = "37107287533902102798797998220837590246510135740250";
Run Code Online (Sandbox Code Playgroud)
问题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
Run Code Online (Sandbox Code Playgroud)
问题1
数组应该是51的长度.但是你可以通过简单的操作来避免手动计算出来char fiftyNumbersOne[] = "blahblahblah";.
问题2
aChar不是指向原始字符串的指针 ; 它只是一个孤立的char浮动内存在某处.但是atoi(&aChar)它将它视为指向以null结尾的字符串的指针.它只是简单地遍历内存,直到找到0某个地方,然后解释它所发现的所有内容.
你可能想要:
one = aChar - '0';
Run Code Online (Sandbox Code Playgroud)
这依赖于以下事实:0to 的字符值9保证是连续的.
| 归档时间: |
|
| 查看次数: |
2606 次 |
| 最近记录: |