第1个回答 2021-11-28
特定的读写实现由库函数处理。WB/RB模式一般采用缓冲区读写,最终实现对外部内存文件或其他输入/输出流的抽象(包括在内存中建立缓冲区)。在此基础上,w/R模式处理上述一些差异。通常,缓冲区的操作取决于库函数的实现。用户无法看到库函数,因为它是不必要的(不能保证不同平台的实现是一致的)。
第2个回答 2021-11-29
RB和R本质上是二进制数据流,但用于文本的二进制数据的含义是ASCII或其他内部代码。与Rb/WB的一个重要区别是,R/W的文本换行格式在不同的系统上是不同的(DOS/windows下的回车字符Cr('\R')+换行字符LF('\n')、UNIX/Linux下的LF和MAC下的Cr),这导致文件操作的某些细节不同(如fputs和fprintf对字符串结尾的处理)。
具体的读写实现由库函数处理,WB/RB模式一般采用缓冲区读写,最终实现对外部内存文件或其他输入/输出流的抽象(包括在内存中建立缓冲区)在此基础上,w/R模式处理了上述一些差异。通常,缓冲区的操作取决于库函数的实现,用户看不到库函数,因为它是不必要的(无法保证不同平台的实施是一致的)。
对于标准输入设备,如键盘,它被抽象为标准输入流stdin。除了抽象过程本身(由底层系统实现)之外,实现方法与从外部存储文件读取没有本质区别。
====
[原始答复小组]
第3个回答 2021-11-27
RB和R本质上是二进制数据流,但用于文本的二进制数据的含义是ASCII或其他内部代码。与Rb/WB的一个重要区别是,R/W的文本换行格式在不同的系统上是不同的(DOS/windows下的回车字符Cr('\R')+换行字符LF('\n')、UNIX/Linux下的LF和MAC下的Cr),这导致文件操作的某些细节不同(如fputs和fprintf对字符串结尾的处理)。
具体的读写实现由库函数处理,WB/RB模式一般采用缓冲区读写,最终实现对外部内存文件或其他输入/输出流的抽象(包括在内存中建立缓冲区)在此基础上,w/R模式处理了上述一些差异。通常,缓冲区的操作取决于库函数的实现,用户看不到库函数,因为它是不必要的(无法保证不同平台的实施是一致的)。
对于标准输入设备,如键盘,它被抽象为标准输入流stdin。除了抽象过程本身(由底层系统实现)之外,实现方法与从外部存储文件读取没有本质区别。
第4个回答 2021-11-30
RB和R本质上是二进制数据流,但用于文本的二进制数据的含义是ASCII或其他内部代码。R/W和Rb/WB之间的一个重要区别是,R/W的文本换行格式在不同的系统上是不同的(DOS/windows下的回车字符Cr('\R')+换行字符LF('\n')、UNIX/Linux下的LF和MAC下的Cr),这导致文件操作的细节不同(例如,通过fput和fprintf处理字符串的结尾)。
具体的读写实现由库函数处理,WB/RB模式一般采用缓冲区读写,最终实现对外部内存文件或其他输入/输出流的抽象(包括在内存中建立缓冲区)。在此基础上,w/R模式处理了上述一些差异。通常,缓冲区的操作取决于库函数的实现。用户无法看到库函数,因为它是不必要的(无法保证不同平台的实现是一致的)。
对于标准输入设备,如键盘,它被抽象为标准输入流stdin。除了抽象过程本身(由底层系统实现)外,实现方法与从外部存储文件读取之间没有本质区别。