• 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

Object Storage Arubacloud
0 głosów
788 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 169 wizyt
0 głosów
2 odpowiedzi 1,081 wizyt
pytanie zadane 5 stycznia 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
1 odpowiedź 500 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...