函数原型
#include <stdlib.h>
int atoi(const char *nptr);
/**************************************
*功能:将一个字符串转换成整数
*参数:
* const char *nptr:不可修改内容的字符串 char*类型
*返回值:int类型 转换后的整数
**************************************/
另外,我没有发现C语言中整数转换字符串的函数。
实现字符串转换整数
//给定一个字符串 转化为整数
int myatoi(char *str){
int flag = 0; //如果是负数 flag = 1
int num = 0;
//str首地址是'-' 或者 '+' 往后移
if(*str == '-'){
flag = 1;
str++;
}
else if(*str == '+')
str++;
//*str 只在0-9之间才转换,否则退出
while(*str>='0' && *str<='9'){
num = num*10 + (*str-'0');
str++;
}
if(flag) return -1*num;
else return num;
}
实现整数转换字符串
//将整数转化成字符串
char *itoa(int num){
char *str;
char *head = str; //记录首地址,好返回
int x;
int flag = 0; //标记num是否为负数
int len; //统计字符串长度
//如果num<0 直接取绝对值 flag标记
if(num<0){
num *= -1;
flag = 1;
}
while(num){
x = num % 10;
*str = x + '0'; //x + '0'就变成字符了
str++;
len++;
num /= 10;
}
if(flag){
*str++ = '-';
len++;
}
*str = '\0'; //'\0'很重要
str = head;
char tmp;
//得到的字符串是倒着的,比如num=-153 那么str=351- 所以需要逆序
for(int i=0; i<len/2; i++){
tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
return head; //str 和 head都指向首地址,返回哪一个都可以
}
测试
int main(int argc, char *argv[])
{
int num = myatoi("-45av");
printf("str=\"-45av\" --> num=%d\n", num);
char *p = itoa(-1542);
printf("num=-1542 --> str=%s\n", p);
return 0;
}

1194

被折叠的 条评论
为什么被折叠?



