-1

我有三个数组,两个整数,另一个是字符,我试图将它们写入文件。

我的方法如下:

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);
}

这个问题似乎是 int 数组不写入 allinfo 字符串。(顺便说一句,asprintf 函数会自行分配内存,如果有人想知道的话)。那么,我想知道如何以有效的方式做到这一点?

4

2 回答 2

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);
于 2012-11-15T04:12:39.887 回答
0

您的格式字符串是"%d%d%s",它用于单个整数,后跟一个整数,后跟一个以 NUL 结尾的字符串。-style 函数无法printf()知道整数数组的长度,也无法知道字符串的结束位置。

所以你需要%d为一个七整数数组提供七个标志。在实践中,您需要循环遍历数组的元素并调用asprintf().

至于字符串,您需要确保它'\0'在传递给之前以asprintf().

于 2012-11-15T04:13:10.407 回答