下面的问题更多的是好奇而不是问题。
我偶然发现了这个问题,提供了两个似乎相同的不同答案。但他们不是,是什么让我思考。
想象一个system
回响两行的电话:
[~,message] = system( 'echo hello && echo world' );
返回:
hello
world
如果想将这些行写入.txt
-file 并在记事本中打开,常见的方法是:
fid = fopen([pwd '\helloworld.txt'],'w');
fprintf(fid, '%s\n', message);
fclose(fid);
winopen('helloworld.txt')
返回
hello world
由于记事本显然无法正确识别换行符\n
,因此解决方案是使用'wt'
而不是'w'
强制执行文本模式,这应该很慢。返回:
hello
world
fopen 权限的文档说:
要以文本模式打开文件,请将字母“t”附加到权限参数,例如“rt”或“wt+”。
在 Windows® 系统上,在文本模式下:
- 遇到回车后跟换行符 ('\r\n') 的读取操作会从输入中删除回车。- 写操作在输出中的任何换行符之前插入一个回车符。
所以在我的理解中,它基本上是这样的:
fprintf(fid, '%s\r\n', message)
但输出再次是:
hello world
还有什么作用'wt'
?一个人如何获得相同的行为'w'
?如果这个问题毫无意义且微不足道,我很抱歉,但经过一些令人沮丧的时间后,我只是好奇我错过了什么。