Podobny problem pojawił się już na forum, ale obiektowo w C++, ja muszę to zrobić w typowym C, ale to dopiero początek zadania które muszę oddać już jutro :(
Wczoraj trochę się nad tym męczyłem. W zasadzie koło 5h[...] i mam mały problem[...].
Problem chcę rozwiązać następująco
//schemat
//0.Otworzenie pliku
//1.pobranie 2 pierwszych znaków z pliku, (jest to ilość znaków w każdej lini pliku (taka sama))
//2.zliczenie ilości liń pliku()
//3.odczyt danych z pliku, znak po znaku
->.zapis do tablicy
//4.zamknięcie pliku
Problemy:
Jak zliczyć ilość liń mojego pliku?
Jak zapisać pojedyncze znaki z mojego pliku do tablicy 2d,?
Problem polega na tym, że muszę to zrobić to dla pliku w którym mam zmienną ilość liń a w niej zmienną ilość znaków w zależności od tego jaki plik wybiorę do wczytania do tablicy (otwarcia). Zapis do tablicy musi się odbywać trochę inaczej. Stąd konieczność wcześniejszego zlicza liń i znaków. Muszę przygotować tablicę na wczytanie nieznanego strumienia danych z pliku.
void operacja_na_pliku(){
FILE *plik = fopen("plik.txt", "r");
if(plik == NULL){
printf("Nie można przeczytać pliku lub jest on pusty");
}
if (plik != NULL) {
char linia[BUFSIZ];
int licz_linie = 0;
while (fgets(linia, sizeof linia, plik) != NULL) {
char *start = linia;
int znak;
int nastepny;
licz_linie++;
while (sscanf(start, "%c%n", &znak, &nastepny) == 1) {
//zapis do tablicy (mam strumień znaków, zmienna nastepny ginie mi za każdym
//razem wiec mam jeden parametr wielkości tablicy 2d, drugim jest licz_linie)
//niezdefiniowana jeszcze tablica char // tablica[licz_linie][nastepny] = znak; // znak = znak z pliku
//który chcę zapisać
start += nastepny;
}
puts("");
}
fclose(plik);
}
}