Witam,
Mam napisać program który obliczy częstotliwość występowania danej litery w zdaniu po wcześniejszym wczytaniu go z pliku. Wszystko działa dobrze do momentu gdy chce powtórzyć program w celu wczytania innego pliku, i zaktualizowania wyniku. Program podwaja mi tylko poprzedni wynik nie dając możliwości wczytania następnej ścieżki do pliku. Próbowałem goto oraz do...while , i efekt był taki sam. Jakaś rada ?
#include <stdio.h>
#include <string.h>
int main()
{
char zdanie[101]; //tablica przechowująca wczytane zdanie
int zlicz[123] = {}; //wyzerowania tablica przechowująca zliczenia liter
char fileName[250];
int i;
int liczba;
skok:
printf("Podaj sciezke do pliku\n");
scanf("%255[^\n]", fileName);
FILE* zw;
char zp;
zw = fopen(fileName, "r");
if (zw == NULL)
printf("plik jest pusty, lub nie istnieje");
while (zp != EOF) {
zp = fgetc(zw);
zdanie[i] = zp;
i++;
}
i = 0;
while (zdanie[i]) {
++zlicz[zdanie[i]]; //zliczanie znaków
++i;
}
for (i = 97; i < 123; i++) //wypisanie wystąpień małych liter ASCII - 97-122
{
if (zlicz[i])
printf("%c - %d\n", i, zlicz[i]);
}
for (i = 65; i < 91; i++) //wypisanie wystąpień dużych liter ASCII - 65-90
{
if (zlicz[i])
printf("%c - %d\n", i, zlicz[i]);
}
printf("Czy chcesz zaktualizowac statystyke ?\n");
printf("Wcisnij 1 jesli tak\n");
printf("Wcisnij 2 jesli nie i zakonczyc program\n");
scanf("%d", &liczba);
switch (liczba) {
case 1:
goto skok;
break;
}
}