>>229
for文を一行にしてて解答者を無駄に迷わせる問題だな。

int str_to_int(int m, char *str)
{
  char code[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; // 【←A】
  int num = 0, i;

  while(*str){
    for(i = 0; (i < m) && (i < sizeof(code) / sizeof(char)) && (tolower(*str) != code[i]); i++);
    num = num * m + i;
    str++;
  }
  return num;
}

main()の方は省略。

【A】 の部分だけど構文エラーなので修正しちゃった。
どうしても文字列リテラル使いたいなら'\0'分を考慮して
 char code[17] = "0123456789abcdef";
 char code[] = "0123456789abcdef";
にしなくちゃダメでしょ。