使用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);
#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);