Zapisanie danych z pliku w tablicy dwuwymiarowej dynamicznej

0

Witam serdecznie,
otóż muszę napisać program, który zapisuje mi w tablicy dwuwymiarowej liczby wczytane z pliku. Oddzielone są od siebie one spacjami, mogą być dowolne i dowolna ich ilość, warunek tylko taki, że w każdej linii tyle samo.
(taki przykład gdybym mimo wszystko nie dość jasno to wytłumaczyła, otóż plik może wyglądać tak:
23 56 576548 1
21 3 5 56
12 3 4353 6)

I po dłuższych przemyśleniach i poszukiwaniach postanowiłam użyć funkcji atoi(). Aczkolwiek niestety nie znam c, co więcej nie umiem w zasadzie programować. Także proszę o pomoc. Wklejam nie działający kawałek kodu:


FILE *fp;
char cZnak;
int nLinie= 0, nLiczby= 0, nSpacje= 0;
double **TablicaDynamiczna;
int i= 0, j= 0;
if((fp=fopen("cyfry.txt", "r"))==NULL){
    puts("Nie mozna otworzyc pliku");
    return 0;
}
while ((cZnak=fgetc(fp)) != EOF)
{
   if(cZnak=='\n') nLinie= nLinie+1;
   if(cZnak==32) nSpacje= nSpacje+1;
   //nLiczby- ilosc liczb w jednej linii
   if(nLinie > 0) nLiczby= (nSpacje+nLinie)/nLinie;
   TablicaDynamiczna= (double **)malloc(nLiczby*sizeof(double *));
   for(i=0; i<nLiczby; i++)
   {
   	TablicaDynamiczna[i]= (double *)malloc(nLinie*sizeof(double));
   	for(j=0; j<nLinie; j++)
   	{
   		TablicaDynamiczna[i][j]=atoi(cZnak);
   	}
   }
   
}

*Kompilator wyświetla mi: 342 15 c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\include\stdlib.h [Error] initializing argument 1 of 'int atoi(const char)' [-fpermissive] ** (linijka z atoi)

Tak, wiem, gdzie jest błąd i nie przybliża mnie to jakoś specjalnie do rozwiązania (tak, patrzyłam w googlach na atoi, ale jak pisałam, dopiero zaczynam, a wskaźniki sprawiają mi problem itp), proszę więc o pomoc/wskazówki i nie pisanie rzeczy które doskonale wiem (jak np to, ze jestem debilem). Z

 

góry bardzo dziękuję za pomoc. Pozdrawiam:)

0

Nie wnikając w całą resztę kodu, atoi wymaga wskaźnika do ciągu, a nie pojedynczego znaku.

{
    char bufor[2] = {cZnak, 0};
    TablicaDynamiczna[i][j] = atoi(bufor);
}

A skoro jest to tylko 1 cyfra, to można krócej:

TablicaDynamiczna[i][j] = cZnak - '0';
0

Dziękuję Ci, bardzo, bardzo serdecznie- działa tak jak chciałam żeby działało:) Pozdrawiam:))

1 użytkowników online, w tym zalogowanych: 0, gości: 1