2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

scanf and fgets

Last updated at Posted at 2016-08-30

#この記事で話したいこと

標準入力関数の中でも、scanfとfgetsにフォーカスして、scanfの注意点, fgetsのメリットについて。

#目次

1.scanfの注意点

2.fetsのメリット

3.まとめ

Target

自分

Purpose

備忘録

#1. scanf の注意点

  • scanf書式
#include<stdio.h>
scanf("%d",&n);

変数の前に&をつけて、アドレスを指定します。
そして、変数nを何にするかによって、変換指定文字を変更することができます。

  • scanfの注意点

空白文字は文字入力の終端と判断されます。
その様子のコードを下記に。


int main()
{
    scanf("%d",&n);
    printf("%d",n);
}

3 2
2

#2. fgetsのメリット
-fgetsの書式

#include <stdio.h>
char *fgets(char *s, int n, FILE *fp);

第一引数は、文字配列のポインタ
第二引数は、一行の文字数。ここには\nも入るので、最大文字数ー1の文字が入ります。
第三引数は、ファイルからだけでなく標準入力からも文字列を受け取れます。
標準入力の場合は「stdin」としてください。

-メリット
一行の文字を入力することができるので、 scanfで問題だったスペースも一文字として含めることができます。

#include<stdio.h>
#define NUM 9
int main(void)
{
  char str[NUM];
  fgets(str,NUM,stdin);
  printf("%s\n",str);
  return 0;
}
2 3459 7 8
2 3459 7 8

#まとめ
上記にあげた注意点をscanfを使ってフォローする方法はあるようです。
ただ私はまだプログラムに慣れていないので、簡単な方法で標準入力方法の道を見つけた、という感じです。

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?