[C] Słowa na tą samą literę
-
- 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ę
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
-
- 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
-
- 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ę
Zakładając że masz tę literę już w jakiejś zmiennej
np. char x= "a"
to jednym z potencjalnych rozwiązań jest:
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
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);
}
Dzięki temu word[0] to pierwsza litera twojego stringu i możesz ją normalnie porównywać ze zmienną x
- Dasio11
- 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ę
Ten kod co prawda się kompiluje, ale instrukcja
robi bardzo dziwne rzeczy.
Po pierwsze, będzie próbowała czytać z adresu wskazywanego przez
Po drugie, potraktuje
Mogło chodzić o instrukcję
która jest sporo bliżej celu, ale wciąż spowoduje próbę zapisu do adresu
(i mieć nadzieję, że w pliku nie będzie słów dłuższych niż 99 znaków).
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).