Funkcja zwracająca wskaźnik do litery z ciągu

0

Witam
Chcę napisać funkcję, w której wpisujemy ciąg znaków oraz literę, którą chcemy zwrócić a ona zwraca wskaźnik do tej litery.
Napisałem coś takiego:

char* zwrocwsk(char *ciag, int ktory) {
         char*slowo=ciag;
         char* litera = &slowo[ktory-1];
         return litera;         
}


int main(int argc, char *argv[])
{
    cout<<zwrocwsk("alamakota",3)<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

I zamiast zwrócić 'a' zwraca 'amakota'. Dlaczego?

Pozdrawiam

1
cout << *zwrocwsk("alamakota",3) << endl;

Jeżeli do cout wsadzisz char * to zostanie to zinterpretowane jako ciąg znaków.

Poza tym Twoja funkcja sprowadza się do jednej linii, te dodatkowe zmienne są niepotrzebne.

inline char *zwrocwsk(char *ciag, int ktory) {
  return &ciag[ktory - 1];
}

Moim zdaniem zmieniane numeracji na rozpoczynającą się od 1 zamiast na tę od 0 nie jest dobrym pomysłem.

1

szybciej by było tak:

char *zwrocWsk(char *ciag, int index)
{
	char *litera = &ciag[index-1];
	return litera;
}
 

i wywołanie

cout << *zwrocWsk("alamakota", 4);

@up -> ajć wyprzedziłeś mnie ;D

1

Nie. Zwraca Ci wskaźnik do tej litery, ale operator << obiektu cout działa tak, że wypisuje kolejne znaki z podanego adresu aż do napotkania wartości 0.
Dlaczego chcesz zwracać wskaźnik, a nie sam znak?
Kolejna sprawa: wyrażenie "tekst" jest typu const char *. Oznacza to tyle, że wskazywana zawartość nie może być zmieniana. Dodaj const to argumentów formalnych funkcji.

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