int i = 0; while (i < size) //size - число строк в файле словаря { fgets(buff, 4096, v); cutstring(buff); bigtosmall(buff); delete_multiple_zeros(buff); mas2[i] = buff; //mas2 у нас char **mas2 = new char*[size]; printf("%d %sn", i, mas2[i]); i++; } 

Displays:

0 аангич 1 абажур 2 абака 3 аббатисса 4 аббатский 5 аббатство 6 аббат 7 абдикация 8 аберрация 9 абзац 10 аблегация 11 абонемент 12 абонент 13 абонирование 14 абонировать 15 абордаж 16 абордировать 17 аборигены

Immediately, with the line below, I write:

 for (int i = 0; i < size; i++) { printf("%d %sn", i, mas2[i]); } 

Displays:

0 аборигены 1 аборигены 2 аборигены 3 аборигены 4 аборигены 5 аборигены 6 аборигены 7 аборигены 8 аборигены 9 аборигены 10 аборигены 11 аборигены 12 аборигены 13 аборигены 14 аборигены 15 аборигены 16 аборигены 17 аборигены

I did not perform any manipulations with the array of pointers. How??

    1 answer 1

    Write mas2 [i] = strdup (buff); and look at the whole list.

    Your buffer address has not changed; the last read line in it always has been and all elements of mas [] indicate it.

    • mas is an array of pointers, not characters. - PaulD 7:07 pm
    • Oh, with Strdup () earned! Yes, you're just some kind of wizard! How did you know about this feature? - PaulD 7:09 pm