【问题标题】:Using atoi, grabbing integer from string使用atoi,从字符串中获取整数
【发布时间】:2017-12-31 14:35:45
【问题描述】:
#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; 
} 

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

如果我读到一些大字符串,例如“111555434536563673673567367....” 长度在 2000 - 3000 之间

我不明白为什么当我打印“suma”时,它不是打印字符串中的某个数字,而是打印一些巨大的整数,比如 83506。

【问题讨论】:

标签: c arrays string atoi


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多