溫馨提示×

c語言中的getline函數(shù)如何使用

小億
228
2023-12-21 19:04:19
欄目: 編程語言

在C語言中,getline函數(shù)用于從標(biāo)準(zhǔn)輸入流中讀取一行文本。它的聲明如下:

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

參數(shù)說明:

  • lineptr:指向用于存儲讀取行的指針的指針。
  • n:指向lineptr指向的緩沖區(qū)的大小的指針,如果lineptr為NULL,則n會被忽略。
  • stream:指向輸入流的指針,通常是stdin(標(biāo)準(zhǔn)輸入流)。

函數(shù)返回值是讀取的字符數(shù)(包括行尾的換行符),如果發(fā)生錯誤或到達(dá)文件末尾,則返回-1。

使用getline函數(shù)的一般過程如下:

  1. 在程序中聲明一個字符指針和一個size_t類型的變量來存儲讀取的行。
  2. 初始化變量,如果需要指定緩沖區(qū)大小,則初始化size_t變量為緩沖區(qū)大小。
  3. 在循環(huán)中使用getline函數(shù)讀取行,直到函數(shù)返回-1(表示讀取結(jié)束或發(fā)生錯誤)。
  4. 處理讀取的行。

下面是一個示例程序:

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

int main() {
    char *line = NULL;  // 用于存儲讀取的行
    size_t len = 0;     // 緩沖區(qū)大小

    printf("請輸入文本(按Ctrl + D結(jié)束輸入):\n");
    while (getline(&line, &len, stdin) != -1) {
        printf("讀取的行:%s", line);
    }

    free(line);  // 釋放動態(tài)分配的內(nèi)存

    return 0;
}

在上面的示例中,程序使用getline函數(shù)從標(biāo)準(zhǔn)輸入讀取文本行,并將每行打印出來,直到輸入結(jié)束(按下Ctrl + D)。注意,getline函數(shù)會自動分配內(nèi)存來存儲讀取的行,所以在程序結(jié)束時需要使用free函數(shù)釋放內(nèi)存。

0