字符串与数字转换-C语言
/**
* by: 小林
* time: 2016-01-15
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*字符串转换为整数*/
int myAtoi(char *array)
{
int result = 0;
char *p = array;
if(*p == '-')
{
p++;
}
while(*p != '\0') // 遍历字符
{
int i = *p-'0';
if(i>=0 && i<=9) // 判断字符的有效性,可能出现字母
{
result = result*10 + i;
}
p++; // 指针后移
}
if(*array == '-')
{
result = -result;
}
return result;
}
/*整数转换为字符串*/
void myItoa(int n, char *array)
{
int num = n;
char *p = array;
if(num < 0) // 负数处理
{
num = -num;
*p++ = '-';
}
do // 用do-while是为了处理出现0 的情况
{
*p++ = '0'+num%10;
num = num/10;
}while(num);
*p = '\0';
int i=0, len = strlen(array);
if(n<0)
{
i=1;
len++;
}
for( ; i<len/2; i++) // 倒置字符串
{
char ch = array[i];
array[i] = array[len-i-1];
array[len-i-1] = ch;
}
}
int main(void)
{
char str[10] = "-1234";
int r = myAtoi(str);
printf("%d\n", r);
myItoa(9876, str);
printf("%s\n", str);
return EXIT_SUCCESS;
}
运行结果
编译环境:Dev-C++