C语言中 字符串如何转为整型数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中 字符串如何转为整型数值相关的知识,希望对你有一定的参考价值。

背景:
main()
char Str[] = "19,2,30,67,5";
int num;
num = a[2];
printf("%d\n", a );//输出51
printf("%s\n", a );//输出30


a[2]本来是30的(字符串),用%d输出则为51,怎么回事,应该怎么转换
若不将a[2]转为整型数值,就没办法用a[2]进行计算了,其他也一样
越简单越好
啊,忘了,要将char Str[] = "19,2,30,67,5";
改为char Str[] ="19","2","30","67","5";

在C语言中将字符串转化成整型有两种方法。
1 用atoi函数。
atoi的功能就是将字符串转为整型并返回。其声明为
int atoi(char *str);
比如atoi("1234");会返回整型1234。
要调用atoi,需要引用头文件stdio.h

2 用sscanf。
sscanf与标准格式化输入函数scanf类似,不过源并非是标准输入,而是字符串。
用sscanf可以处理更复杂的字符串。
比如字符串char * str = "a=1, b=2";
定义int a,b;后
可以用
sscanf(str,"a=%d, b=%d",&a,&b);
来将a,b值提取,计算后,a=1, b=2。
要使用sscanf同样需要引用头文件stdio.h。
参考技术A 额、、编都不能编译 ,把字符串转化为整形有3种方法:
1.-‘0’ (适用1~9);
2.调用函数atoi()
3.调用函数sscanf();本回答被提问者采纳
参考技术B /*
*解决方案 看一下吧!
*/

#include <stdio.h>
#include <stdlib.h> //atoi()函数头文件

int main()

char* a[] = "19", "2", "30", "67", "5"; //注意要定义为数组指针才能像你这样赋值
int num;

num = atoi(a[2]); //atoi(const char *)该函数实现字符型转化为整形
printf("%d\n", num); //输出数值30
printf("%s\n", a[2]); //输出字符30

return 0;
参考技术C 1 先改了能运行。
#include <stdio.h>
void main()
char a[] = "19,2,30,67,5";
int num;
num = a[2];
printf("%d\n", a);//输出51
printf("%s\n", a);//输出30


2 VC++ 2005下运行结果是:
1244988
19,2,30,67,5

3 结果与你所说的不符,无法分析。
参考技术D 不知道你要说什么,给你个字符串转为整型数值的程序
#include<stdio.h>
int strtoint(char *str)

int num=0,i;
for(i=0;str[i]!='\0';i++) num=num*10+str[i]-'0';
return num;

void main()

int n=strtoint("30");
printf("%d",n);

C语言 如何将16进制形式的字符串,转化为相同的16进制的整型?

如何将16进制形式的字符串,转化为相同的16进制的整型。

例如:"0x123"的字符串转化为16进制也为0x123。

如何将16进制形式的字符串,转化为相同的16进制的整型,这个问题,如果是在输出端而言,这本身是不存在的问题。因为要输出十六进制的数,本身就是输出一个字符串,完全不需要转换的。
如果是要转换为在计算机内存储的变量的值,则是提问者对计算机的原理不理解。计算机中所有的数都是以二进制形式存储,才能直接进行计算的。如果是要把十六进制的字符串,转换为数值形式,实际上是转换为十进制值(计算机以二进制存储,十六进制形式是程序员为简便而产生的,它是二进制表示的另一种形式),可以以下面的代码实现:
int str2int(char s[])
int i,f;
for(i=f=0;s[i];i++)
if(s[i]>='0'&&s[i]<='9')f=f*16+s[i]-'0';
else if(s[i]>='a'&&s[i]<='f')f=f*16+s[i]-87;
else if(s[i]>='A'&&s[i]<='F')f=f*16+s[i]-55;
else return f;
追问

你这样只是把代码中字符串“0x123”变成了123 虽然这也是16进制 但是没有0x ,然后把你转化后的数给i,在代码中i=123,它会以十进制给i,虽然给i的只是一个数,存储来说都是二进制,但这里i的大小就是10,也就是0xa,这和所需求的0x123就不符了。 ***需求为:“0x123转换为在计算机内存储的变量的值,但是这里并不是要存”0x123“字符串的值,而是存0x123的值。

追答

我的程序并不是把"0x123"变为123,而是变为0x123的等值十进制值291。因为它在计算机内存储的就是i=291的二进制值,只是在输出时,如果规定以printf("0x%x",i);就会得到输出0x123。

参考技术A 整形就是整数,不分几进制。
几进制只是常量书写形式而已

以上是关于C语言中 字符串如何转为整型数值的主要内容,如果未能解决你的问题,请参考以下文章

C语言字符转数字

c语言中如何将short,int,long,float这些类型的数值转换为字符串?

c语言中如何将short,int,long,float这些类型的数值转换为字符串?

C语言函数实现 | 02-整型数据转为字符串

C语言中,如何将一个数组中的数值转换成字符串输出?

c语言中如何将字符串转化成整数型并输出?