功能如strcpy()
,malloc()
,strlen()
和各种其他接受他们的观点或返回值作为size_t
而不是int
或unsigned int
原因是显而易见的。为什么fgets接受int而不是size_t?
某些文件函数如fread()
和fwrite()
也使用size_t
。通过扩展,预计char* fgets (char *str, int num, FILE *stream)
应该使用size_t
而不是int
作为其缓冲区大小的参数。
但是,fgets()
使用int
。有什么客观的解释,为什么?
C标准库没有一致性。功能随着时间的推移而发展。引入'fgets'时可能不存在'size_t'(只是我的猜测)。 – user694733
https://groups.google.com/forum/#!topic/comp.std.c/FnENEIlCidg – artm
歇斯底里的葡萄干。可能早期实现(标准化之前)使用'int'并且在C被标准化时继续进行“兼容性”。我正在投票结束*基于意见*。 –