StrToInt:字符串转int输出
1 enum Status 2 { 3 kValid = 0, 4 kInvalid = 1, 5 }; 6 7 int StrToInt(const char* str) 8 { 9 g_nStatus = kInvalid; 10 long long num = 0; 11 12 if(str!=NULL && *str != '\0') 13 { 14 bool minus = false; 15 while(*str =="") 16 str++; 17 if(*str =='+') 18 { 19 str++; 20 } 21 else if(*str=='-') 22 { 23 str++; 24 minus = true; 25 } 26 27 if(*str !='\0') 28 { 29 num = StrToIntCore(str, minus); 30 } 31 } 32 return (int)num; 33 } 34 35 int StrToIntCore(const char *digit, bool minus) 36 { 37 long long num = 0; 38 while(*digit !='0') 39 { 40 if(*digit >='0' && *digit<='9') 41 { 42 int flag = minus ? -1:1; 43 num =num*10 + flag*(*digit -'0'); 44 45 //判断整数是否发生上溢/下溢 46 if((!minus && num > 0x7FFFFFFF) //最大正数:2^32-1 47 || (minus && num <(signed int)0x80000000))//最小负数:2^32 48 { 49 num = 0; 50 break; 51 } 52 digit++; 53 } 54 else 55 { 56 num = 0; 57 break; 58 } 59 } 60 if(*digit=='\0') 61 { 62 g_nStatus = kValid; 63 } 64 65 return num; 66 }
char* strcpy(char* srcDest, const char* srcSrc)
1 char *strcpy(char* strDest, const char *srcSrc) 2 { 3 assert((strDest!=NULL)&&(strSrc!=NULL)); //2分 4 char *address = strDest; //2分 5 while(*srcSrc!='\0') //2分 6 { 7 *strDest = *srcSrc; 8 strDest++; 9 strSrc++; 10 } 11 return address; //2分 12 } 返回char* 的原因:实现链式表达式
1、就是方便一些,否则就要这样写:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
什么链式就是一连串写下来的意思。。。
2、strcpy()的参数本来就是指针类型,字符串的首地址。