Name: Anonymous 2009-05-24 9:14
what the fast way to check that string contain only characters within some set like "a-z0-9"?
int i;
if(sscanf(s, "%*[a-z0-9]%n", &i) > 0 && s[i] == 0)
for(int i=0; i<str_length; i++){
switch(str[i]){
case 'a':
//do something
break;
case 'A':
//do something
break;
case 'b':
//do something
break;
case 'B':
//do something
break;
case 'c':
//do something
break;
case 'C':
//do something
break;
case 'd':
//do something
break;
case 'D':
//do something
break;
case 'e':
//do something
break;
case 'E':
//do something
break;
case 'f':
//do something
break;
case 'F':
//do something
break;
case 'g':
//do something
break;
case 'G':
//do something
break;
case 'h':
//do something
break;
case 'H':
//do something
break;
case 'i':
//do something
break;
case 'I':
//do something
break;
case 'j':
//do something
break;
case 'J':
//do something
break;
case 'k':
//do something
break;
case 'K':
//do something
break;
case 'l':
//do something
break;
case 'L':
//do something
break;
case 'm':
//do something
break;
case 'M':
//do something
break;
case 'n':
//do something
break;
case 'N':
//do something
break;
case 'o':
//do something
break;
case 'O':
//do something
break;
case 'p':
//do something
break;
case 'P':
//do something
break;
case 'q':
//do something
break;
case 'Q':
//do something
break;
case 'r':
//do something
break;
case 'R':
//do something
break;
case 's':
//do something
break;
case 'S':
//do something
break;
case 't':
//do something
break;
case 'T':
.........
}
}
C's string handling sucks. Length-prefix is obviously superior.C is like trying to build web servers in lisp.
int is_inset(const char *s)
{
while (*s)
{
if (!(*s>='a' && *s<='z' || *s>='0' && *s<='9'))
return 0;
++s;
}
return 1;
}