C语言中 字符串如何转为整型数值 C语言:把数字字符串转换成整型数字

C\u8bed\u8a00\u600e\u4e48\u628a\u5b57\u7b26\u4e32\u8f6c\u5316\u4e3a\u6574\u5f62\u6570\u5b57 \u662f-'0'\u5417

\u597d\u5427
\u6211\u7ed9\u4f60\u770b\u770b\u6211\u7684\u7a0b\u5e8f\u5427
#include
#include
int main()
{
char zifu[80];
int shuzi[80];
gets(zifu);//\u4f60\u7684gets\u7528\u5bf9\u4e86\u54e6
for(int i=0;i<strlen(zifu);i++)//\u7531\u4e8e\u5b57\u7b26\u6570\u7ec4\u4e0b\u8868\u4ece0\u5f00\u59cb \u6240\u4ee5\u662f0
{//\u540c\u65f6strlen(zifu)\u662fzifu\u6570\u7ec4\u7684\u5b57\u7b26\u6570\u91cf \u5982\u679c\u752880\u4f1a\u6709\u7a7a\u5b57\u7b26\u7684\u54e6
shuzi[i]=zifu[i]-'0';//\u662f-'0' \u4e5f\u53ef\u4ee5\u5199\u6210-48
}
for(int i=0;i<strlen(zifu);i++)
printf("%d",shuzi[i]);
return 0;
}

在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。

额、、编都不能编译 ,把字符串转化为整形有3种方法:
1.-‘0’ (适用1~9);
2.调用函数atoi()
3.调用函数sscanf();

/*
*解决方案 看一下吧!
*/

#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;
}

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 结果与你所说的不符,无法分析。

不知道你要说什么,给你个字符串转为整型数值的程序
#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语言怎么任意输入字符串 ... c#字符串格式不正确原因 ... c#分割字符串 ... c语言 字符串怎么声明 ... c#字符串截取方法 ... c#拆分字符串 ... 整型怎么变成字符串 ... c语言%s输入字符串 ... c语言字符强制转换为整型 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网