gets, scanf, fgets, fscanf

getsが危険だからfgetsを使えってコンパイルが言うのでそうしてたけど、
scanfだとエラーが出なかった。

#include <stdio.h>

int main(void){
  printf("input something\n");
  char buffer[10];
  scanf("%s",buffer);
  printf("you input %s\n",buffer);

  return 0;
}

fscanfもfgetsと同じように使えるのかなと思ったら、使えた。

#include <stdio.h>

int main(void){
  printf("input something\n");
  char buffer[10];
  fscanf(stdin,"%s",buffer);
  printf("you input %s\n",buffer);

  return 0;
}


fgetsは文字列で読み出すので、型を気にする必要がない分安全だということだろう。
改行を削除しないといけないのがめんどくさいけど。

#include <stdio.h>

int main(void){
  printf("input something\n");
  char buffer[10];
  fgets(buffer,10,stdin);

  printf("you input %s\n",buffer);

  return 0;
}