截取字符问题,求指教。
小孟很聪明,但是很偷懒。他打数字从来不用空格,因此相邻的几个数都会连在一起。比如,小孟想打三个数123 98 -8921,他会打成12398-8921。
今天,小孟妈妈让他记几组整数,可是小孟打下来的数字又连在一起了。
不过小孟记得每组数据都有三个数,前两个数字都是正数,其中第一个数字有3位,第二个数字有2位,
第三个数字是负数,连同负号一共有5位。
你能帮帮小孟么?
上面是题目,我真的不会了。老师说要字符串变成整数,大佬么救救我。
。
[此贴子已经被作者于2020-10-21 21:29编辑过]
#include <stdio.h> int main( void ) { for( int a,b,c; scanf("%3d%2d%5d",&a,&b,&c)==3; ) printf( "%d %d %d\n", a, b, c ); }
// 将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); }