2012-11-15 34 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()

相关问题