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