[英]fgets for unknown string length
如何使用fgets
从未知长度的键盘缓冲区读取字符串? *fgets(char *s, int size, FILE *stream);
我可以在int
大小的位置给fgets
一个NULL
吗?
不,您需要知道什么是行终止符(通常是换行符和/或回车符),并一直循环阅读直到获得为止。 当然,您还需要增加缓冲区并在获取缓冲区时将其复制到其中。
如果有,POSIX的getline()
执行此操作。
fgets
的length参数是功能比gets
“好”的原因之一。 您绝对必须指定要传递的缓冲区可以容纳的数据量,否则您的应用程序可能会崩溃。
在我的大多数应用程序中,只要满足我希望接收的任何内容,我只会使用几次缓冲区。
使用getline可能会导致malloc / realloc,如果使用动态内存没有问题,请随时使用该函数。 我更喜欢简单的buffer[MAX_SIZE+1]
变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.