我试图读取一个大小未知的文本文件到一个数组中。我通过逐个字符地读入数组并在数组末尾达到时重新分配内存来实现这一目标。
从数组大小从16增加到32开始,realloc方法只复制前4个字符。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int *text_arr = malloc(1*sizeof(int));
text_arr[0] = '\0';
int text_len=1;
int i=0;
FILE *fp;
fp = fopen("1.txt", "r");
while ((text_arr[i] = fgetc(fp)) != EOF) {
/* increment i for next loop */
i++;
/* extend the array if needed */
if (i >= text_len) {
/* debug prints */
printf("Text: ");
for (int n=0; n<i; n++)
printf("%c,", text_arr[n]);
printf("\n\n");
/* double array size */
text_len *= 2;
text_arr = (int*)realloc(text_arr, text_len);
}
}
text_arr[i] = '\0';
fclose(fp);
return 0;
}
可能出了什么问题?
text_arr[i]
是一个int
对象。 - Oka