簡體   English   中英

getline中第二個參數的目的是什么?

[英]What is the purpose of the second parameter in getline?

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

int main(void)
{
    char* buffer = malloc(100 * sizeof(char));
    size_t n = 3;

    getline(&buffer, &n, stdin);
    printf("%s\n", buffer);
    free(buffer);
}

我認為getline的第二個參數size_t *n是限制讀取的字符數。 但是當我嘗試使用更大的輸入時,它仍然會讀取所有輸入。 我在手冊頁和網上搜索但找不到答案。 有誰可以幫我解釋一下?

來自getline手冊頁

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

如果* lineptr為NULL,則getline()將分配用於存儲該行的緩沖區,該緩沖區應由用戶程序釋放。 (在這種情況下,忽略* n中的值。)

或者,在調用getline()之前,* lineptr可以包含指向malloc(3)分配緩沖區* n字節大小的指針。 如果緩沖區不足以容納該行,則getline()使用realloc(3)調整其大小,根據需要更新* lineptr和* n。

強調我的。 簡而言之,更新n以確保線條適合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM