/* * * 把整数字符串传化为int,直到遇到非数字字符 * */ static int str_ainttoi(const char *s) { int ret=0; int sig=1; if(*s=='-'){ s++; sig=-1; } while(*s) { if(*s>='0'&&*s<='9') { ret*=10; ret+=*s-'0'; } else return ret; s++; } return ret*sig; } int str_ahextoi(const char *s) { int ret=0; while(*s) { if(*s>='0'&&*s<='9') { ret*=16; ret+=*s-'0'; } else if(*s>='a'&&*s<='f') { ret*=16; ret+=*s-'a'+10; } else if(*s>='A'&&*s<='F') { ret*=16; ret+=*s-'A'+10; } else return ret; s++; } return ret; } int str_atoi(const char *s) { if(s[0]=='0'&&((s[1]=='x')||(s[1]=='X'))){ return str_ahextoi(&s[2]); }else{ return str_ainttoi(s); } } /* * * 从左向右找到字符串s中首次出现字符c的指针,没找到返回0 * 例如 char *s=str_find_char_right("abcdef",'c') * s="cdef" * */ const char *str_find_char_right(const char *s,char c) { while(*s){ if(*s==c) return s; s++; } return 0; } /* * * 判断字符是否是空白字符,是返回1,不是返回0 * */ static inline int str_is_empty_char(char c) { const char table[]="\t\n\v\f\r "; if(str_find_char_right(table,c)!=0) return 1; else return 0; } /* * * 判断字符串是否是可打印,是返回1,不是返回0 * */ int str_is_print_str(const char *str,int len) { if(len==0){ return 0; } for(int i=0;i=' '&&str[i]<='~'))) return 0; } return 1; }