Witam. Mam takie zadanko do zrobienia:
Napisz program, który otwiera do odczytu plik lec.txt, który zawiera 26 przykładowych wierszy tekstu różnej długości.
Program powinien wywoływać funkcję alokuj_tab_str(), która pobiera wskaźnik plikowy. Funkcja
alokuj_tab_str() powinna alokować pamięć dla tablicy 26 wierszy znaków (char) o długości o jeden większej
od liczby znaków w kolejnych wierszach pliku. W tym celu funkcja alokuj_tab_str() powinna zliczać liczbę
znaków w wierszu (bez znaku nowej linii) i alokować odpowiedni blok pamięci. Następnie funkcja powinna
odczytywać kolejne wiersze pliku znak po znaku i zapisywać je w odpowiednich wierszach tablicy, dodając po
ostatnim znaku odczytanego wiersza znak NULL (\0). Funkcja alokuj_tab_str() powinna zwracać wskaźnik do
tak stworzonej tablicy łańcuchów. W dalszej kolejności program powinien wypisywać kolejne wiersze tablicy
używając funkcji puts() i dealokować przydzieloną pamięć.
Napisałem cos takiego ale nie moge znaleŹĆ bledów a troche juz na dtm siedze . Prosze o wskazówki jeśli ma ktos chwilke.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFF 100
char **alokuj_tab_str(char *s)
{
int dl;
char p[BUFF];
char **tab;
tab=(char**)malloc(26*sizeof(char*));
FILE *in;
int i=0;
if((in=fopen(s,"r")==NULL))
{
printf("%s","Blad otwarcia pliku");
return 0;
}
while(fgets(p, BUFF, in)){
dl=strlen(p);
tab[i]=(char *)malloc((dl+1)*sizeof(char));
sprintf(tab[i],"%s\0",p);
i++;
}
fclose(in);
return tab;
}
int main(int argc, char *argv[]) {
int i;
char **tab;
tab=alokuj_tab_str("c:\\users\\jo\\desktop\\sesja\\9\\plik.txt");
if(tab==NULL)return 0;
for(i=0;i<26;i++)
{
puts(tab[i]);
}
return 0;
}