我有一些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文件中。正如你所知道的那样,这不是制表符分隔的,这是我的主要问题。我在使用格式字符串时遇到了一些麻烦。有谁知道如何重新格式化它以打印标签和换行符?
答案 0 :(得分:1)
您正在ImgData
创建一个字符串,然后将其作为输入传递给fprintf
。这会将ImgData
读入格式字符串的第一个%s
,然后在末尾添加至少一个标签。
你应该做的是写下这样的东西:
`fprintf(DataOut,'%s\t%i\n',imgName,imgNumber)`
假设imgName
是字符串而imgNumber
是整数。请注意,我将两个占位符(使用%-sign)和两个输入变量传递给fprintf。
例如,使用%6.2f
打印浮点数,总共6个字符,包括逗号后面的2个字符,用于SNR
。
为了便于开发,您可以将第一个输入参数删除到fprintf
,在这种情况下,它将打印到命令行。