C言語のfgets関数の使い方についてわかりやすく詳しく解説

目次から探す

fgets関数の注意点と解決策

fgets関数は、入力された文字列に改行文字も含めて読み込みます。

つまり、改行文字も文字列の一部として扱われます。

例えば、以下のようなコードを考えてみましょう。


#include <stdio.h>
int main() {
    char str[100];
    printf("文字列を入力してください:");
    fgets(str, sizeof(str), stdin);
    printf("入力された文字列:%s", str);
    return 0;
}

このコードでは、ユーザーに文字列の入力を求め、入力された文字列を表示します。

しかし、fgets関数は改行文字も読み込むため、ユーザーが改行を入力すると、改行文字も含めて文字列が表示されます。

文字列を入力してください:Hello World
入力された文字列:Hello World

このような場合、改行文字を除外するために、文字列の最後にある改行文字を削除する必要があります。

以下のような方法で改行文字を削除することができます。


#include <stdio.h>
#include <string.h>
int main() {
    char str[100];
    printf("文字列を入力してください:");
    fgets(str, sizeof(str), stdin);
    // 文字列の最後にある改行文字を削除する
    str[strcspn(str, "\n")] = '\0';
    printf("入力された文字列:%s", str);
    return 0;
}

strcspn関数は、指定した文字列の中で最初に出現する文字の位置を返す関数です。

ここでは、改行文字(“\n”)が最初に出現する位置を取得し、その位置にある文字をヌル文字(‘\0’)で置き換えることで、改行文字を削除しています。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す