#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;
}

第一天,我在做冒险游戏。
我的问题是我不能用atoi从字符串中选择特定的数字。
据我所知,atoi需要一个指针作为参数。
如果我读到像“111555434536563673673567367….”
长度在2000-3000之间
我不明白为什么当我打印“suma”时,它会打印一些大整数,比如83506,而不是打印字符串中的某个数字。

最佳答案

据我所读,atoi需要一个指针作为参数。
需要一个指针只是交易的一部分另一部分是指针需要指向以空结尾的表示整数的字符串。
此外,x = sir[2]; pX = &x不是如何获得指向sir[]数组第二个元素的指针:x是第三个数字的副本(数组是基于零的),而pX是指向该副本的指针。
如果要获取一个数字值,请从中减去'0'(注意,单引号在0左右):

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

如果需要使用atoi执行此操作,请将数字复制到以空结尾的字符串中:
char copy[2] = {0};
copy[0] = sir[2];
int thirdDigitVal = atoi(copy);

09-05 17:33