C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下分别用my_atoi()函数将字符串转换为对应的整数,用itoa()函数将整数转换为字符串的。
atoi 把字符串转换成整型数
itoa 把一整数转换为字符串
1、实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
比如:输入字符串“1234”,返回数字1234。
输入字符串“+1234”,返回数字1234.
输入字符串“-1234”,返回数字-1234.
代码如下:
#include<stdio.h> #include<assert.h> #include<ctype.h> #include<stdlib.h> int my_atoi(char *p) { int flag=1,rav=0; assert(p); while(isspace(*p))//判断指针是否为空白字符 { *p++; } if(*p==‘-‘) { flag=-1;//flag保存符号正负 } if(*p==‘-‘||*p==‘+‘)//如果有符号位后移 { p++; } while(*p)//依次将数字中每一位赋给rav,此判断条件等价于while(*p!=‘\0‘) { if((*p>=‘0‘)&&(*p<=‘9‘)) { rav=rav*10+(*p-‘0‘);//*p-‘0‘是每一次取出来的数字 } p++; } return flag*rav;//返回符号和数字的积 } int main() { char str[10]; gets(str);//输入一个字符串 printf("%d\n",my_atoi(str)); system("pause"); return 0; }
2、实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中。
代码如下:
#include<stdio.h> #include<stdlib.h> void reverse(char str[],int len)//逆序整个字符数组 { int left=0; int right=len-1; while(left<right) { char temp=str[left]; str[left]=str[right]; str[right]=temp; left++; right--; } } void itoa(int num, char str[]) { int i=0,j,flag; flag=num;//flag保存符号 if(num<0)//如果输入的数字为负数时,转化成正数 num=-num; while(num) { str[i++]=num%10+‘0‘;//数字逆序存入字符数组中 num/=10; } if(flag<0) { str[i++]=‘-‘;//字符数组中存入符号 } str[i]=‘\0‘; reverse(str,i); } int main(void) { char str[20]; int num; scanf("%d",&num); itoa(num,str); printf("%s\n",str); system("pause"); return 0; }
时间: 2024-10-26 02:36:15