Liczenie wyrazów czytanych z pliku

0

Witajcie drodzy forumowicze. Pisze program działający na plikach tekstowych, jego zadania opierają się na tym by z pliku wczytać wyrazy (tylko litery), wyświetlić je a później dać użytkownikowi możliwość wyświetlenia dowolnego wyrazu podając jego nr. Wszystko ładnie poszło ale problem się zaczął kiedy czytane litera po literze wyrazy chciałem zapisać jako no.. całe wyrazy. Różnie próbowałem ale głównie kończyło się to na tym, że dostawałem jedną literę.
Tu jest mój kod, proszę o jakąś podpowiedź bo szukałem trochę i nie znalazłem nic pomocnego.
Pozdrawiam, draggie.

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


int main(){
    FILE *plik;
	char string[100];
	char nazwa[100];
	char wyraz[100];
	int slowo;
	int j;
	printf("Podaj nazwe pliku: ");
	scanf("%s",nazwa);
	printf("\n");
	plik=fopen(nazwa,"r");
	if (plik==NULL){
		fprintf(stderr,"\aBlad: Nie ma pliku o takiej nazwie\n");
		return 1;
	}
	
	for (int i=0;string!=NULL;i++){
		string[i]=getc(plik);
		if (feof(plik)!=0)
		break;
		else if ((string[i]==32)||(string[i]==10)){
				j++;
		printf("\n");
		 }
		else if(isalpha(string[i])){
				
				printf("%c",string[i]);
		}
	}
	printf("Podaj nr slowa:");
	scanf("%d",&slowo);
	printf("to slowo to %c",wyraz[slowo]);
	
	return 0;
}
0

Z tego, co pamiętam, powinieneś sczytywać znaki aż do wystąpienia białego znaku i wtedy zapisać to jako wyraz. Niestety nie jestem w stanie się zorientować w Twoim kodzie, więc nawet nie wiem czy tego próbowałeś... ^^"

0

o_O Musisz mieć tablicę wyrazów, tzn tablicę dwuwymiarową. No bo przecież chcesz dla liczby zwracać CIĄG ZNAKÓW, czyli dla liczby zwracać TABLICĘ.

0

Uwaga! Czepiam się... :P

  1. Nazewnictwo zmiennych i funkcji (tu ich brakuje, staraj się pisać proceduralnie, będzie łatwiej) przydaje się innym by mogli Ci pomóc i Tobie samemu, byś łatwiej rozwiązywał błędy w kodzie. Przykładowo: nie "wyraz[100], a tablica_wyrazow[WIELKOSC_TABLICY]"
  2. Po co Ci zmienna j?
  3. Deklaracje zmiennych mogą śmiało następować po przecinku

A teraz rozwiązanie: Zastosuj się do tego co powiedzieli przedmówcy, obie porady są dobre, wykorzystaj do tego zmienną przechowującą kolumnę, każda kolumna będzie wyrazem, a warunek zapisania znaku do tablicy (unikanie białych i pustych znaków) zrealizuj choćby przez funkcję isalpha(int) której już użyłeś.

Pozdrawiam :)

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