• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wskaźnik na znak w łańcuchu char

VPS Starter Arubacloud
0 głosów
952 wizyt
pytanie zadane 9 lutego 2017 w C i C++ przez robRoy Użytkownik (970 p.)
zamknięte 9 lutego 2017 przez Eryk Andrzejewski

Mam stworzyć funkcję char * znajdz(char * text, char alfa), która zwraca wskaźnik na drugie wystąpienie znaku w łańcuchu char. Jednak mam problem z poprawnym wprowadzeniem argumentów do funkcji. Dokładniej z char alfa i nie rozumiem dlaczego (zwłaszcza że taki sposób jest sugerowany przez polecenie zadania). Wiem że funkcja jest niedopracowana, ale ciezko to zrobić nie mogąc wprowadzić argumentów.

#include <cstdio>
#include <cstring>

char * znajdz(char * text, char alfa){
	char * wynik = strstr( text, alfa);
    char * wynik2 = strstr( (wynik+1), str2 );
    
	return wynik2;
}

int main()
{
    char wpis[] = "1410 : bitwa pod Grunwaldem.";
    char *text = wpis;
    char alfa[] = "w";
    
	znajdz (text, alfa);
    printf( "Znaleziono lancuch: %s\n", wynik2 );
   
    return 0;
}

 

komentarz zamknięcia: Rozwiązane

2 odpowiedzi

0 głosów
odpowiedź 9 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
wybrane 9 lutego 2017 przez robRoy
 
Najlepsza

Zmien definicje funkcji dodajac kwadratowe nawiasy po alfa:

char * znajdz(char * text, char alfa[]){
char * wynik2 = strstr( (wynik+1), str2 );

czy tu nie powinno byc

char * wynik2 = strstr( (wynik+1), alfa );

no i to wywolane funkcji w mainie jest troche bez sensu, kompilator nie rozumie co to jest wynik2 w mainie.

Po ty zmianach u mnie dziala

1
komentarz 9 lutego 2017 przez robRoy Użytkownik (970 p.)
Główny problem był z tym brakiem nawiasów [ ], reszta drobnica, dzięki
0 głosów
odpowiedź 9 lutego 2017 przez draghan VIP (106,230 p.)

Drugim parametrem funkcji ma być char alfa, czyli znak - Ty zaś podajesz do funkcji wskaźnik na znak. Popraw definicję:     char alfa[] = "w";

komentarz 9 lutego 2017 przez robRoy Użytkownik (970 p.)
Widzę problem. Czy chodziło o coś takiego: char alfa = 'w'; bo jeżeli tak to w dalszym ciągu ten sam problem.
komentarz 9 lutego 2017 przez draghan VIP (106,230 p.)
Chodziło o coś takiego.

Podaj komunikat błędu.
komentarz 9 lutego 2017 przez robRoy Użytkownik (970 p.)
[Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
1
komentarz 9 lutego 2017 przez draghan VIP (106,230 p.)

Uch, Twój kod roi się od błędów. Wybacz, nie przyglądałem się zbyt uważnie wcześniej i moja analiza zakończyła się na pierwszym pasującym symptomie.

Pierwszym grzechem jest użycie niewłaściwej funkcji wyszukującej. Ta, której używasz, przeznaczona jest do znajdywania podłańcuchów. Tobie wystarczy specyficzny podłańcuch - jednoelementowy, czyli po prostu pojedynczy znak. Innymi słowy potrzebujesz użyć funkcji std::strchr().

Później do zmiennej wynik2 próbujesz przypisać coś pobranego z str2, zaś takiej zmiennej nigdzie nie masz.

Następnie w main() wywołujesz swoją funkcję znajdz() ale nie przechowujesz nigdzie tego, co ona zwróci.

Potem zaś, wypisując jaki łańcuch znaleziono, próbujesz odwołać się do zmiennej wynik2 - lokalnej względem funkcji znajdz(). W main() taka zmienna nie istnieje.

Podobne pytania

0 głosów
2 odpowiedzi 191 wizyt
0 głosów
2 odpowiedzi 1,278 wizyt
pytanie zadane 5 stycznia 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
1 odpowiedź 519 wizyt

93,023 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,369 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...