2012-08-08 51 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,在這種情況下,它將打印到命令行。