2012-11-15 37 views
-1

我有三個數組,兩個ints另一個字符,我試圖將它們寫入一個文件。寫一個整數和字符數組到一個文件

我的做法是這樣的:

FILE *file; 
char *allinfo=NULL; 
int intArrayOne[7]; 
int *intArrayTwo=malloc(10*sizeof(int)); 
char *charArray=malloc(5*sizeof(char)); 
..... 
write into the arrays 
..... 

if((file=fopen("filename", "a+"))==NULL) 
    printf("something went wrong\n"); 
else 
{ 
    asprintf(&allinfo, "%d%d%s", intArrayOne, intArrayTwo, charArray); 
    fprintf(file, "%s", allinfo); 
    fclose(file); 
} 

的問題,這似乎是整型數組不寫進allinfo字符串。 (asprintf函數順便分配內存,如果有人想知道的話)。那麼我怎麼能這樣高效地完成呢?

回答

0

%d將打印一個整數值,而不是整數上的數組。沒有格式代碼會打印數組,您必須單獨傳遞每個數組元素。

asprintf(&allinfo, "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%s", 
    intArrayOne[0], ... intArrayOne[6], intArrayTwo[0], ... intArrayTwo[9], charArray); 
0

格式字符串是"%d%d%s",這是一個整數,接着一個整數,通過一個NUL終止的字符串跟隨。 printf()-style函數無法知道整型數組的長度,也沒有辦法知道在哪裏結束字符串。

所以你需要給7個%d七個整數數組的標誌。實際上,您需要遍歷數組的元素並調用asprintf()

至於字符串,你需要確保它以'\0'結尾,然後傳遞到asprintf()

相關問題