Я не понимаю, почему первое значение моего массива изменяется вне внутреннего цикла while, когда «i» увеличивается правильно. Я выделяю память таким образом, чтобы что-то испортилось? Как мне исправить эту проблему?
int main(void)
{
int sizeArray = 5, sizeString = 10;
FILE *fin = fopen("file.txt", "r");
char ** arr = (char **) malloc(sizeArray * sizeof(char *));
char line[1000];
char *word;
int i = 0;
while(fgets(line, 100, fin) != NULL)
{
word = strtok(line, " ");
while (i < 2)
{
arr[i] = (char *)malloc(sizeString * sizeof(char));
arr[i] = word;
printf("Inner print: %s\n\n",arr[0]);
word = strtok(NULL, " ");
i++;
}
}
printf("This is the final arr[0] (outer print): %s",arr[0]);
}
file.txt читается как:
First second.
Third! Fourth
Печать с моей консоли выглядит следующим образом:
Inner print: First
Inner print: First
The final arr[0] (outer print): Third!
Когда я хочу, чтобы внешний отпечаток был: Первый