我正在寻找从stdin/stdout读取/写入数据的各种方法.目前我了解scanf/printf,getchar/putchar和gets/puts.有没有其他方法可以做到这一点?我也很有兴趣知道哪一个在内存和空间方面最有效.
提前致谢
无论您喜欢哪种方式读取数据,Stdio 的设计都相当高效。如果您需要进行逐个字符的读取和写入,它们通常会扩展为仅访问缓冲区的宏,除非缓冲区已满/空。对于逐行文本 io,请使用puts/fputs和fgets。(但永远不要使用gets,因为无法控制它将读取多少字节!)该printf系列(例如fprintf)当然对于文本非常有用,因为它允许您在写入之前跳过在内存中构建临时缓冲区(因此可以让您避免考虑所有内存分配、溢出等问题)。fscanf往往没那么有用,但主要是因为它很难使用。如果您很好地研究了文档fscanf并学习如何使用%[、%n和数字说明符,它会非常强大!
对于大文本块(例如将整个文件加载到内存中)或二进制数据,您还可以使用fread和fwrite函数。您应该始终为 size 参数传递 1,为 count 参数传递要读/写的字节数;否则无法从返回值判断成功读取或写入了多少内容。
如果您使用的是相当类似 POSIX 的系统(几乎任何系统),您还可以使用较低级别的 io 函数open、read、write等。这些不是C标准的一部分,而是 POSIX 的一部分,并且通常是非 POSIX 系统提供相同的功能,但行为可能略有不同(例如,文件描述符可能不像 POSIX 所要求的那样按顺序编号 0,1,2,...)。
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |