c语言中如何将一个字符ascii码转换为整型数

Posted

tags:

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

#include"stdio.h"
#include"string.h"
main()

int i,s;
int num[80];
char str[80],ch[80];
i=0;
s=0;
printf("input a string:");
gets(str);
while(str[i]!='\n')

i++;

str[i]='\0';
for(i=0;i<80;i++)
if(str[i]>='0'&&str[i]<='9')

ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];

printf("%d",s);
printf("\n");
getch();

c语言中,字符ascll码是通过控制其输出格式来把它转化为整型数的,格式控制中"%c",就是将其以字符形式输出,而直接改成"%d",就可以将其转换为整型数。

ASCII码,英文全称:American Standard Code for Information Interchange,是美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ASCII允许计算机和计算机程序交换信息。ASCII字符集是与ANSI字符集中的前面128个(0-127)字符相同。

美国信息交换标准代码ASCII为"美国信息交换标准代码"十个字对应英文的缩写,ASCII文件是简单的无格式文本文件,可以由任何计算机所识别,Windows中的记事本及任何文字处理程序都可以阅读及创建ASCII文件。ASCII文件通常都具有扩展名.TXT(例如README.TXT)

在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示。
参考技术A 删掉ch[i]这个步骤就可以了
ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];
改成
num[i]=str[i]-'0';
s=s*10+num[i];
参考技术B str[i]-'0'这不就转了吗,直接减去'0'(字符)追问

可是运行结果有错啊?

追答

你那是赋值错误,你把整数赋值给了ch[i],你直接打印出来str[i]-'0'看看

参考技术C while(str[i]!='\n')
这里改成 while(str[i]!='\0')
参考技术D for循环的错误,不能让他加到80.i<strlen(str);并且gets的用法也有错误,它会直接加‘\0’,不用自己加吧
你的程序写的有点繁琐

#include"stdio.h"
#include"string.h"
main()

int i,s;
char str[80];
i=0;
s=0;
printf("input a string:");
gets(str);

for(i=0;i<strlen(str);i++)
if(str[i]>='0'&&str[i]<='9')


s=s*10+str[i]-'0';

printf("%d",s);
printf("\n");
getchar();
本回答被提问者采纳

C语言中关于字符串转整型?

char buf[] = "c1";怎么转成int型?

字符串转成整型可以使用atoi函数。

函数原型:int atoi(const char *nptr);

功能:把字符串转换成整型数。

参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \\0) 字符时停止转换,返回整型数。否则,返回零。

参考代码:

#include <stdlib.h>
#include <stdio.h> 
int main()

    int n;
    char *str = "12345";
    n = atoi(str);
    printf("%d\\n",n);
    return 0;

/*
运行结果:
12345
*/
参考技术A 字符型和整型在内存中都是以二进制形式存放的,所以二者可以通用,进行混合运算,比如'A'+1;当以%d的格式输出时为66;以%c的格式输出时为字符'B';

所以,字符型和整型是没有必要转化(主要要掌握字符型ASCII代码的范围即可,即0到256)对于运算过程没有什么区别,如果要进行字符型转整型,那也指的是输出格式的不同;但字符串转整型,这句话我就有点不明白了,即使要转,也是一个字符一个字符的进行转化。

比如:ch[]="A"; 字符ch[0]='A';ch[1]='\0';

ch[]="ABC"; 字符ch[0]='A';ch[1]='B';ch[2]='C';ch[4]='\0';

主要看你是以什么格式输出。

如果对你有所帮助,请记得采纳最佳答案,谢谢!
参考技术B 不可以 除非存数字的字符串 参考技术C 用函数可以转换,但是里面必须是一个数字,itoa函数,自己查一下。 参考技术D char *buf=(char *)malloc(2*sizeof(char));
*buf[0]='c1';
*buf[1]='\0';
//至此,buf[]和你声明的字符串一样的内容了
//增语句如下
free(buf);
buf=(int *)malloc(2*sizeof(int));
//至此,buf[]是整型数组,但为空

//想直接得到ASCII码的话,就写:
int a=buf[0];
//同样,如下也对
printf("%d",buf[0]);本回答被提问者和网友采纳

以上是关于c语言中如何将一个字符ascii码转换为整型数的主要内容,如果未能解决你的问题,请参考以下文章

C# 中 将IP字符串转换为整型

C语言中关于字符串转整型?

keil c中如何把字符串转化为整型 具体一点

C语言ASCII码与字母如何转换?求详解

ord()char()ASCII码变量转换

十六进制ascii码转浮点数