使用atoi,从字符串中获取整数

时间:2017-12-31 14:35:45

标签: c arrays string atoi

#include<stdio.h>
#include<conio.h>
#include<string.h>

int main() {    {
    char sir[3000];
    int i;
    int suma = 0;
    int lungime;

    scanf("%s", sir);

    lungime = strlen(sir);   

    char x;
    char *pX;

    x = sir[2];
    pX = &x;

    suma = atoi(pX); 
    return 0; 
} 

我正在做adventOfCode,Day1。 我的问题是我无法使用atoi从字符串中选择某些数字。 从我读到的,atoi需要一个指针作为参数。

如果我读了一些像“111555434536563673673567367 ......”这样的大字符串。 长度在2000 - 3000之间

我无法理解为什么当我打印“suma”时,它不会打印出我的字符串中的某个数字,而是会输出一些巨大的整数,如83506.

1 个答案:

答案 0 :(得分:1)

  

根据我的阅读,atoi需要一个指针作为参数。

需要一个指针只是交易的一部分。另一部分是指针需要指向表示整数的以空字符结尾的字符串。

此外,x = sir[2]; pX = &x 如何获得指向sir[]数组的第二个元素的指针:x是第三个数字的副本(数组)从零开始,pX是指向副本的指针。

如果您想获得单个数字的数值,请从中减去'0'(注意零附近的单引号):

int thirdDigitVal = sir[2] - '0';

如果您需要使用atoi,请将数字复制到以空字符结尾的字符串中:

char copy[2] = {0};
copy[0] = sir[2];
int thirdDigitVal = atoi(copy);