#2 Pavla Kainráthová
Musíš na to jít jinak... Aktuálně tu matici ani nevytvoříš, protože na stacku způsobem, jak to děláš ty, pole vytvářet nemůžeš, můžeš si takové pole nicméně vytvořit na haldě (pomocí malloc/calloc).
Jakým způsobem to budeš chtít udělat:
1. Soubor by měl být ve formátu, kdy z jednoho řádku můžeš jednoznačně určit, kolik se tam nachází sloupců v matici (neboli proměnných, x,y,z,...). Může vypadat například takhle.
// když se tam proměnná nenachází, použijeme nulu
1;1;2;-3;4;0;0;
// když se tam proměnná nenachází, použijeme prázdný index
1;1;2;-3;4;;;
V obou případech stejný počet středníků - 7 (7 sloupců/proměnných)
2. Přečteš si, kolik sloupců (budeš počítat třeba ty středníky) tam máš, a ty přiřadíš do proměnné, například N.
3. Přečteš si, kolik řádků v daném souboru máš a ty přiřadíš do proměnné, například M.
4. Na haldě si alokuješ nové dvourozměrné pole reprezentující matici...
int** matice = (int**)malloc(pocetRadku * sizeof(int*));
int i;
for (i = 0; i < pocetRadku; ++i) {
matice[i] = (int*)malloc(pocetSloupcu * sizeof(int));
}
A teď musíš ten soubor přečíst znova, když už víš, že máš matici, která odpovídá rozměrům, a teprve do ní nacpat hodnoty.