[英]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.