我有带有整数元素的字符数组,例如 data[4]={"1234"}。我想把它转换成整数元素。可能有最简单的方法 ie 从每个数组元素中减去 48 以获得相应的整数。在这里,我正在使用 atoi() 函数但没有得到预期的结果。当前输出: 1234 、 234 、 34 、 4
预期输出: 1 , 2 , 3 , 4 我应该如何得到它?
#include<stdio.h>
#include<string.h>
int main(void)
{
int num0;
int num1;
int num2;
int num3;
char data[6]={"1234"};
num0 =atoi(&data[0]);
printf("num0 =%d\n",num0);
num1 =atoi(&data[1]);
printf("num1 =%d\n",num1);
num2 =atoi(&data[2]);
printf("num2 =%d\n",num2);
num3 =atoi(&data[3]);
printf("num3 =%d\n",num3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
bru*_*uno 10
atoi使用所有字符串进行转换,而不仅仅是第一个字符。然后
&data[0]
是data
“1234”=>atoi(&data[0])
返回 1234&data[1]
是data+1
“234”=>atoi(&data[1])
返回 234&data[2]
是data+2
“34”=>atoi(&data[2])
返回 34&data[3]
是data+3
“4”=>atoi(&data[3])
返回 4你想要做这样的事情data[i] - '0'
在那里我是0..3
#include <stdio.h>
int main(void)
{
char data[] = {"1234"}; /* or const char * data = "1234" */
int i;
for (i = 0; i != 4; i += 1)
printf("num%d = %d\n", i+1, data[i] - '0');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译和执行:
pi@raspberrypi:/tmp $ gcc -Wall c.c
pi@raspberrypi:/tmp $ ./a.out
num1 = 1
num2 = 2
num3 = 3
num4 = 4
pi@raspberrypi:/tmp $
Run Code Online (Sandbox Code Playgroud)
除此之外,我鼓励您停止使用atoi,因为atoi("aze")
返回 0 而不发出错误信号。相反,您可以使用strtol或scanf与格式"%d"
检查scanf返回 1。