模擬實現atoi
int my_atoi(const char *str)
{
assert(str);
int res = 0;//保存結果
int sign = 1;//符號標誌
char *p = (char *)str;
while(*p != '\0')
{
while(*p == ' ')
{
p++;//跳過空格
}
if(*p == '-')
{
p++;
sign = -1;//標記爲負數
}
else if(*p == '+')
{
p++;
sign = 1;//正數
}
while(isdigit(*p))
{
int n = *p-'0';//將字符轉化爲數字
res = res*10 + n;
p++;
}
return sign*res;
}
return 0;
}
模擬實現itoa
//字符串的逆置函數
char *reverse(char *s)
{
assert(s);
char *head = s;
char *tail = s;
while(*tail != '\0')
{
tail++;//此時tail已經走到了'\0'的位置
}
tail--;//因此循環結束以後將tail往後移動一個
while(head < tail)
{
char tmp = *head;
*head++ = *tail;
*tail-- = tmp;
}
return s;
}
//模擬實現的itoa函數
char *myitoa(int num,char *s)
{
int i = 0;
int flag = 1;
if(num < 0)
{
num = -num;//先將其轉化爲正數
flag = -1;//記錄該數是一個負數
}
//將數的每一位一一轉化爲字符
while(num > 0)
{
s[i++] = num%10+'0';
num = num/10;
}
if(flag == -1)
{
//如果是一個負數,則最終的字符串前面有一個'-'的字符。
//所以加上負號
s[i++] = '-';
}
//最後加上字符串的'\0'
s[i] = '\0';
//假如要轉化的數字是-123,則走到這一步已經轉化爲字符串"321-"
//此時再將"321-"逆置就可得到"-123"
//調用字符串的逆置函數
reverse(s);
return s;
}