2012-08-08 52 views
0

我有一些Matlab代码,我试图导出一些字符串并从中创建一个制表符分隔的文本文件。我认为fprintf在C中的表现类似(如果不是,请编辑我的标签)。我相信我的问题是与我的格式字符串。基本上我有7个字符串,我想用制表符分隔,然后换行符。请注意,“fid”是一个完整的路径。我在for循环中循环,因此每行都附加了行,并且构建了文件。格式化fprintf

ImgData = strcat(ImgData, fid, '\t', imgNumber, '\t', N_std,'\t',S,'\t',N,'\t',SNR,'\t',SNR_dB,'\n'); 
DataOut = fopen(strcat('Image_F', folderNumber, '_Data.txt'), 'w'); 
fprintf(DataOut,'%s\t %s\t %s\t %s\t %s\t %s\t %s\n',ImgData); 

您可能对此如何出口感到好奇。这种格式如

fid\tI#\tN_std\tS\tN\tSNR\tSNR_dB\n 

在txt文件中。正如你可以告诉这是不是制表符分隔我的主要问题。我在格式化字符串中遇到了一些麻烦。有谁知道如何重新格式化它,所以它打印标签和换行符?

+0

删除C/C++标记 - 有问题的代码只是matlab,不是? – stijn 2012-08-08 13:57:47

+0

,更重要的是,你的问题是什么?问题是什么?预期产出?最小的代码可以重现问题? – stijn 2012-08-08 13:58:27

+0

我很确定fprintf是直接从C++中获取的,所以我重新添加了C++标记。我的问题是它打印非制表符分隔。这些选项卡以字符串形式打印而不是制表符。 – 2012-08-08 14:03:26

回答

1

您正在创建一个字符串ImgData,然后您将其作为输入传递给fprintf。这会将ImgData读入格式字符串的第一个%s,然后在最后添加至少一个选项卡。

你应该做的,而不是为写类似:

`fprintf(DataOut,'%s\t%i\n',imgName,imgNumber)` 

即假设imgName是一个字符串,imgNumber一个整数。请注意,我将两个占位符(带有%-sign)和两个输入变量传递给fprintf。

使用%6.2f打印总共6个字符的浮点数,例如在逗号后面输入2,例如SNR

为了更容易的开发,您可以将第一个输入参数丢弃到fprintf,在这种情况下,它将打印到命令行。