Cześć wszystkim! Dawno się tu nie odzywałem ;)
Mam problem z programem, który ma szukać występowania wyrazów w pliku tekstowym i zapisywać do oddzielnego pliku numer wiersza i kolumny takiego wyrazu. Po uruchomieniu program zawiesza się, ale nie mam pojęcia w jakim momencie. Pragnę dodać, że na początku napisałem identyczny program w C++ i działa bez zarzutu, lecz po napisaniu go w C coś w nim nie działa. Liczę na podpowiedź i z góry dziękuję za pomoc :)
Opis działania algorytmu działającego na łańcuchach:
- wczytanie linii z pliku
- wycinanie z niej poszczególnych wyrazów
- porównanie z wyrazem szukanym
- zapisanie wyniku do pliku
#include <stdio.h>
#include <stdlib.h>
void zapisz(int wiersz, int kolumna, char slowo[], char output[])
{
FILE *plik;
if((plik=fopen(output, "w") == NULL))
{
printf("Nie mozna otworzyc pliku %s do zapisu!\n", output);
exit(1);
}
else
{
fprintf(plik, "Slowo %s znajduje sie w wierszu nr %d, w kolumnie nr %d\n", slowo, wiersz, kolumna);
fclose(plik);
}
}
void wczytaj_szukaj(char input[], char output[], char slowo_szukane[])
{
FILE *plik;
char str[100], line[100];
int wiersz=0, kolumna=1, dlugosc_wyrazu;
int i;
if((plik=fopen(input, "r") != NULL))
{
while(fgets(str, 20, stdin) != NULL)
{
kolumna = 1;
wiersz++;
dlugosc_wyrazu=0;
for(i=0; i<=strlen(line); i++)
{
if(line[i] != ' ' && line[i] != '\n')
dlugosc_wyrazu++;
else
{
strcpy(str, strncpy(str, line, dlugosc_wyrazu));
if(strcmp(slowo_szukane, str))
{
zapisz(wiersz, kolumna, str, output);
continue;
}
else
{
dlugosc_wyrazu = 0;
kolumna++;
}
}
}
}
}
else
printf("Nie udalo sie otworzyc pliku");
}
int main(int argc, char **argv)
{
char input[100] = "input.txt",
output[100] = "output.txt",
str[100] = "slowo";
wczytaj_szukaj(input, output, str);
return 0;
}