1

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

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 文件中。如您所知,这不是制表符分隔的,这是我的主要问题。我在使用格式字符串时遇到了一些问题。有谁知道如何重新格式化它以打印标签和换行符?

4

1 回答 1

2

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

你应该做的是写这样的东西:

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

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

使用%6.2fprint 总共 6 个字符的浮点数,包括逗号后的 2 个字符,SNR例如 。

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

于 2012-08-08T15:08:33.257 回答