Я пытаюсь прочитать файл и получить содержимое файла и сохранить его в массиве из 2 элементов [0]: для содержимого [1]: для значения NULL. Этот код работает правильно, если только я хочу, чтобы напечатать его, но я хочу использовать в качестве массива:Прочитать файл и сохранить его в массиве
char ch;
FILE *file;
file = fopen("input.txt","r");
int allocated_size = 10;
int used_size = 0;
char c, *input, *tmp_input;
// allocate our buffer
input = (char*)malloc(allocated_size);
if (input == NULL) {
printf("Memory allocation error");
return 1;
}
while ((c = fgetc(file)) != EOF){
// make sure there's an empty one at the end to avoid
// having to do this check after the loop
if (used_size == allocated_size-1) {
allocated_size *= 2;
tmp_input = (char*)realloc(input, allocated_size);
if (tmp_input == NULL) {
free (input);
printf("Memory allocation error");
return 1;
}
input = tmp_input;
}
input[used_size++] = c;
}
// we are sure that there's a spot for last one
// because of if (used_size == allocated_size-1)
input[used_size] = '\0';
printf("\nEntered string in the file: %s\n", input);
Но как я могу использовать «вход», как массив:
char *input[] = {"This is string value from file!", NULL};
Для этого случая Я могу получить доступ к тексту таким образом: input[0]
'из-за if (used_size == alloc_size-1)' wrong. Измененная used_size уже была увеличена, когда вы выходите из цикла. (добавьте assert(), и вы увидите его один раз) – wildplasser