10進数の場合は真を返す

引数が10進数の場合は真を返すマクロを作る問題なんだけど、わからないから関数で…。

#include <stdio.h>

int is_digit(char str[]) {
  int i, n;
  char cpy[] = "";
  
  strcpy(cpy, str);
  cpy[1] = '\0';
  
  if(strcmp(str, "0") != 0 && strcmp(cpy, "0") == 0)
    return 0;
  
  for(i=0; i<strlen(str); i++){
    n = str[i];
    if(n>=48 && n<=57)
      continue;
    else
      return 0;
  }
  return 1;
}

int main() {
  char str[100];
  fgets(str, sizeof(str), stdin);
  str[strlen(str)-1] = '\0';
  
  if(is_digit(str))
    printf("%s is digit.\n", str);
  else
    printf("%s is not digit.\n", str);
  return 0;
}

メモ

  • ポインタがでる前の章の問題