繁体   English   中英

未知字符串长度的fgets

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM