C语言中,一段字符串“c11234”。如何提取后面4位数字,赋值给一个变量

一段字符串改为一个二维数组,a[][]={c11234
c21234
c33112
c41234 }取每行的后四位数,来个具体点的程序

这是我写的,试过了,应该可以用:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *a[] = { "c11234",
"c21234",
"c33112",
"c41234"};
int i;
for(i = 0; i < 4; ++i) {
int value = atoi(a[i] + strlen(a[i]) - 4);
printf("%d : %d\n", i, value);
}
return 0;
}追问

我说的不是二维数组吗,你讲的那个带星的数组我不懂

追答

那就改成这样子吧:

#include
#include
#include
int main() {
char a[][8] = { "c11234",
"c21234",
"c33112",
"c41234"};
int i;
for(i = 0; i < 4; ++i) {
int value = atoi(a[i] + strlen(a[i]) - 4);
printf("%d : %d\n", i, value);
}
return 0;
}

因为编译器需要知道二维数组的列数,因此列数一定是一个已知的常数,你可以根据字符串的长度设置,列数至少比字符串长度大1.

追问

atoi(a[i] + strlen(a[i]) - 4);这句话就可以取到每一行的后四位并转化为整形》?

追答

你可以这样认为。
准确地说,应该是:
a[i] + strlen(a[i]) - 4 是获得后四位所在的字符串的首地址,
atoi 函数是把从这个首地址开始的这个字符串里的内容转换成为整数

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-22
char a[10],b[10];
int n;
strcpy(b,a+2); //此时b数组中就是后四位数字
n = atoi(b); //n的值就是1234了追问

一段字符串改为一个二维数组,a[][]={c11234
c21234
c33112
c41234 }取每行的后四位数,来个具体点的程序

第2个回答  2012-08-22
#include<string.h>
#include <stdio.h>

void main()

{
int b=0,i;
char a[]="c11234";
for(i=strlen(a)-4;a[i];i++)
{
b=b*10+a[i]-'0';
}
printf("%d",b);
}
第3个回答  2012-08-22
写程序把c去掉,然后atoi追问

可以用atof吗,我还想计算:intb b=atof(a[])/100
最后b是一个小数

追答

int foo()
{
int i = 0;
int j = 0;
long b[4] = {0};
char a[][] = {"c11234","c21234","c33112","c41234"};
for(i = 0; i='9' || a[i][j]<='0')
{
a[i][j] = '0';
}
else
{
break;
}
}
b[i] = atoi(a[i]);
printf("%d\n", b[i]);
}

return 0;
}

...一段字符串“c11234”。如何提取后面4位数字,赋值给一个变量
int main() { char *a[] = { "c11234","c21234","c33112","c41234"};int i;for(i = 0; i < 4; ++i) { int value = atoi(a[i] + strlen(a[i]) - 4);printf("%d : %d\\n", i, value);} return 0;}

在sql触发器中,如何提取字符串的后四位,并赋值给相应的列属性
set 字段 = right(另外一张表的字段,4)from (select 另外一张表的字段 from 另外一张表 )where 条件 =

输入一字符串 按要求把其中的字母和数字分开输出 用c语言编写
main(){ char *p,str[] = "CSB0 C11234C21234O21234H41234";p=&str[5];while (*p!='\\0'){ printf("%c%c=",*p,*(p+1));p+=2;while (1){ if (*p>='0' &&*p<='9'){ printf("%c",*p++);}else { break;} } printf("\\n");} } ...

如何提取一个字符串中的字符为新的变量
C语言字符处理把一个字符串中指定字符赋值给另一字符串可以使用substr函数提取子串。 基本使用方法:substr(原字符串,起始位置,提取字符个数) 例如输入一段文字“一只小狐狸拒绝被人圈养”str1把小狐狸复制给另一字符串str2substr(str1,5,6)

c语言共用体赋值问题
34 12 00 00 看起来这个数字是倒过来的。由于b.c1使用该共同体的第一个字节,所以b.c1的值为0x34,b.c2也就是0x12了,假如你的结构体有c3,c4,那么c3,c4就是00了。这个结果和CPU的字序息息相关,有一些处理器字序是“大尾(Big end)",比如sparc,0x1234在内存中的排列是 00 00 12 34...

关于C语言里getchar函数的问题?逻辑想不通啊、。 既然是顺序计算,等 ...
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);这个会输入4个字符 c5=getchar(); c6=getchar();这个会输入2个字符 所以你的c1-c6依次是123456 然后你输入出的是c5和c6 所以输出的是56 这个很正常啊···,我不晓得你描述的等于号具有右极限是啥意思,我只晓得按照你的程序流程是这么运行的·...

c语言编写程序,从键盘输入一个4位数,将其各位重新拼装后输出。拼装规...
Author: banxi1988 任意给出一个四位数,c语言编写程序,从键盘输入一个4位数,将其各位重新拼装后输出。拼装规律为:原4位数的千位为新数的百位;例如:输入1234,输出3142 \/ include<stdio.h> include<stdlib.h> include<math.h> define BITS 4 \/** 定义的多少位数?*\/ define JIN 10 \/...

用C语言怎么能输出 1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4...
4.常量类型 整数,长整数,无符号数,浮点数,字符,字符串,符号常数,转义字符。5.数据类型转换 ·自动转换 在不同类型数据的混合运算中,由系统自动实现转换, 由少字节类型向多字节类型转换。 不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型。·强制转换 由强制...

这个程序如何正确输入(c语言)?
第一个数据对应%d格式在输入1234之后遇字母a,因此认为数值1234后已没有数字了,第一个数据到此结束,把1234送给变量a。字符‘a’送给变量b,由于%c只要求输入一个字符,因此输入字符a之后不需要加空格,后面的数值应送给变量c。如果由于疏忽把本来应为1230.26错打成123o.26,由于123后面出现字母‘o...

C#winform中如何提取系统日期?赋值给一个string 变量保存
提取系统日期: DateTime.Now;转换成字符串的话 DateTime.Now.Tostring("dd-MM-yyyy");ToShortString等;至于你说的格式的话,月份是个问题,直接写个switch判断月份吧。

相似回答