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

Using atoi, grabbing integer from string

#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,第 1 天。 我的问题是我无法使用 atoi 从字符串中选取某些数字。 根据我的阅读,atoi 需要一个指针作为参数。

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

我不明白为什么当我打印 "suma" 时,它没有打印我的字符串中的特定数字,而是打印了一些巨大的整数,例如 83506。

From what I read, atoi needs a pointer as argument.

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

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

的指针

如果你想得到单个数字的数值,从中减去 '0'(注意零周围的单引号):

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

如果您需要用 atoi 来完成,请将数字复制到以 null 结尾的字符串中:

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