[C] Słowa na tą samą literę

Libertarian
Użytkownik
Użytkownik
Posty: 49
Rejestracja: 14 lip 2013, o 12:40
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 7 razy
Pomógł: 1 raz

[C] Słowa na tą samą literę

Post autor: Libertarian »

Cześć, mógłby mi ktoś podać zarys jak powinien wyglądać pogram wypisujący słowa na tą samą literę z pliku? Chodzi mi głównie o to, że nie wiem za bardzo jakbym miał sprawdzać czy słowa zaczynają sie na tą samą literę albo chodziarz łatwiejszą wersje, czyli program znajdujacy słowa zaczynające sie na literę a. Z góry dziekuję za pomoc
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C] Słowa na tą samą literę

Post autor: bartek118 »

Nie do końca rozumiem o co Ci chodzi - litera jest z góry ustalona?
Libertarian
Użytkownik
Użytkownik
Posty: 49
Rejestracja: 14 lip 2013, o 12:40
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 7 razy
Pomógł: 1 raz

[C] Słowa na tą samą literę

Post autor: Libertarian »

Powiedzmy, że tak
tomkoder
Użytkownik
Użytkownik
Posty: 75
Rejestracja: 8 gru 2013, o 12:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 19 razy

[C] Słowa na tą samą literę

Post autor: tomkoder »

Zakładając że masz tę literę już w jakiejś zmiennej
np. char x= "a"

to jednym z potencjalnych rozwiązań jest:

Kod: Zaznacz cały

 FILE *file = fopen(filename, "r");

char *word = NULL;
   while(!feof(file))
      {
      sscanf(word, filename, "%s");
      if(word[0]==x)
         printf("%s
", word);
      }
to wykorzystuje że string jest tablicą charów, a chary to liczby, tak jak inty.
Dzięki temu word[0] to pierwsza litera twojego stringu i możesz ją normalnie porównywać ze zmienną x
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10225
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2362 razy

[C] Słowa na tą samą literę

Post autor: Dasio11 »

Ten kod co prawda się kompiluje, ale instrukcja
sscanf(word, filename, "%s");
robi bardzo dziwne rzeczy.
Po pierwsze, będzie próbowała czytać z adresu wskazywanego przez word, czyli z adresu NULL, co oznacza błąd.
Po drugie, potraktuje filename jako ciąg formatujący, wbrew intencji.
Mogło chodzić o instrukcję
fscanf(file, "%s", word)
która jest sporo bliżej celu, ale wciąż spowoduje próbę zapisu do adresu NULL, czyli błąd. Dlatego trzeba jeszcze wprowadzić zmianę
char *word = NULL; --> char word[100];
(i mieć nadzieję, że w pliku nie będzie słów dłuższych niż 99 znaków).
ODPOWIEDZ