我试图在matlab上用fprintf编写一个文本文件我使用for循环:

fID = fopen('fileName','w');
fSpec = cat(2,repmat('%s', 1, 3),'\n');
for k=1:10
    to_write = [num2str(k) ',' num2str(k*k)];
    fprintf(fID, fSpec, to_write);
end
fclose(fID);

文件是写的,但只写在一行上我试着用gedit和matlab打开它。
怎么了?

最佳答案

你的格式说明符有点奇怪。
to_write将是一个普通字符串,那么为什么要将fSpec构造为%s%s%s\n
如果每个循环需要一行,只需执行以下操作:

for k=1:10
    to_write = [num2str(k) ',' num2str(k*k)];
    fprintf(fID, '%s\n', to_write);
end

编辑:
如果%s%s%s\n被设计为与[num2str(k) ',' num2str(k*k)]中的三个字符串匹配:这是不必要的。
[num2str(k) ',' num2str(k*k)]的结果只是一个字符串,因此您只需要一个'%s'格式说明符,而不是三个。

10-04 20:41