我有三个数组,两个是另一个字符,我试图将它们写入文件。
我的方法如下:
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 Arrays没有写入allinfo字符串。 (asprintf函数按顺序分配内存,如果有人想知道的话)。那么怎么能以有效的方式完成呢,我想知道吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
您的格式字符串是"%d%d%s"
,它是一个整数,后跟一个整数,后跟一个以NUL结尾的字符串。 printf()
- 样式函数无法知道整数数组的长度,也没有办法知道字符串的结束位置。
因此,您需要为七个整数数组提供七个%d
标志。实际上,您需要遍历数组的元素并调用asprintf()
。
对于字符串,您需要确保在传递给'\0'
之前以asprintf()
结尾。