截取字符问题,求指教。
小孟很聪明,但是很偷懒。他打数字从来不用空格,因此相邻的几个数都会连在一起。比如,小孟想打三个数123 98 -8921,他会打成12398-8921。
今天,小孟妈妈让他记几组整数,可是小孟打下来的数字又连在一起了。
不过小孟记得每组数据都有三个数,前两个数字都是正数,其中第一个数字有3位,第二个数字有2位,
第三个数字是负数,连同负号一共有5位。
你能帮帮小孟么?
上面是题目,我真的不会了。老师说要字符串变成整数,大佬么救救我。


。
程序代码:
// 将12398-8921截取为三组数,第一个数字3位,第二个数字2位,第三个数字是负数,连同负号一共有5位。
#include<stdio.h>
#include <stdlib.h>
int main(void)
{
int i,num1,num2,num3;
char str1[4] = {' '}; // 声明时多一个,存放结束符,避免出乱码(下同),因为利用循环切割字符时,并不会自动加结束符。
char str2[3] = {' '};
char str3[6] = {' '};
/* char str[10] = "12398-8921"; */
char str[10] = {' '}; // 此语句及下面的循环输入,与上一条被注释掉的语句可互相替换
for(i = 0;i < 10;i++)
{
scanf("%c",&str[i]);
}
for(i = 0;i < 3;i++) // 截取第1组字符
{
str1[i] = str[i];
str1[4] = '\0';
}
for(i = 3;i < 5;i++) // 截取第2组字符
{
str2[i - 3] = str[i];
str2[3] = '\0';
}
for(i = 5;i < 10;i++) // 截取第3组字符
{
str3[i - 5] = str[i];
str3[6] = '\0';
}
num1 = atoi(str1); // 将字符转换为数字
num2 = atoi(str2);
num3 = atoi(str3);
printf("第一个数字是:%d \n",num1);
printf("第二个数字是:%d \n",num2);
printf("第三个数字是:%d \n",num3);
}