#include <stdio.h> #include <stdlib.h> #include <string.h> int Myatoi(const char* str) { if(str==NULL)//判断指针是否为空 { printf("Pointer is NULL\0"); return 0; } while(*str==' ')//忽略前导空字符 str++; int sign=1;//判断符号 if(*str=='-') sign=-1; if(*str=='+' || *str=='-') ++str;//str指向符号位的后一位 int integer=0; while(*str<='9' && *str>='0'){ integer=integer*10+*str-'0'; ++str; } return integer*sign; } char* Myitoa(int value,char *str) { if(value==0) return "0"; int sign=1; char *tempStr=str; if(value<0){ str[0]='-';//第一个是负号 value=-value; sign=-1; str++; } while(value!=0){ *str=value%10+'0'; value=value/10; ++str; } *str='\0'; if(sign==1){//无符号时从0开始逆序 int i=0; int j=strlen(tempStr)-1;//注意此处下标的值 while(i<j) { char temp; temp=tempStr[i]; tempStr[i]=tempStr[j]; tempStr[j]=temp; i++; j--; } }else{ int i=1;//有符号时从1开始逆序 int j=strlen(tempStr)-1;//注意此处下标的值 while(i<j) { char temp; temp=tempStr[i]; tempStr[i]=tempStr[j]; tempStr[j]=temp; i++; j--; } } return tempStr; } int main() { int value=-10; char str[100]; printf("%s\n",Myitoa(value,str)); return 0; }
时间: 2024-11-09 02:58:09