getline函数在C语言中如何使用?

C言語では、標準入力ストリームから1行のテキストを読み込むためにgetline関数が使われます。その宣言は以下のようになります:

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

パラメータの説明:

  1. lineptrは、読み取り行を格納するためのポインタを指すポインタです。
  2. n:lineptrが指すバッファのサイズを指すポインタであり、lineptrがNULLの場合はnは無視されます。
  3. stream:入力ストリームへのポインタを指すもので、通常はstdin(標準入力ストリーム)です。

関数の戻り値は読み取った文字数(改行文字を含む)であり、エラーが発生した場合やファイルの末尾に到達した場合は-1を返します。

getline関数の一般的な手順は次のとおりです。

  1. プログラム内で、行を読み込むために、charポインターとsize_t変数を宣言します。
  2. 変数を初期化し、必要な場合はバッファのサイズを指定するために、size_t変数をバッファのサイズで初期化します。
  3. getline関数を使用してループ内で行を読み取り、関数が-1を返すまで(読み取りが終了したことを示すか、エラーが発生したことを示す)読み込みます。
  4. 行を処理する。

以下はサンプルプログラムです。

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *line = NULL;  // 用于存储读取的行
    size_t len = 0;     // 缓冲区大小

    printf("请输入文本(按Ctrl + D结束输入):\n");
    while (getline(&line, &len, stdin) != -1) {
        printf("读取的行:%s", line);
    }

    free(line);  // 释放动态分配的内存

    return 0;
}

示例では、プログラムはgetline関数を使って標準入力からテキスト行を読み込み、それをすべて印刷しています。入力が終わるまでです(Ctrl+Dを押す)。getline関数は、読み込んだ行を格納するために自動的にメモリを割り当てるので、プログラム終了時にはfree関数を使ってメモリを解放する必要があります。

bannerAds