C标准没有定义这样的功能,但POSIX确实如此.
这里记录的getline功能(或者如果你在类UNIX系统上输入的话)可以满足你的要求.man getline
它可能不适用于非POSIX系统(例如MS Windows).
一个演示其用法的小程序:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *line = NULL;
size_t n = 0;
ssize_t result = getline(&line, &n, stdin);
printf("result = %zd, n = %zu, line = \"%s\"\n", result, n, line);
free(line);
}
Run Code Online (Sandbox Code Playgroud)
与此一样fgets,'\n'换行符仍留在数组中.
一种方法是运行循环并getchar不断将字符放入数组中。一旦阵列满了,realloc就把它吃到更大的尺寸。