Napisałem funkcję, która korzystając z tablicy charów, zwraca wskaźnik na ten element tablicy, który jest drugim wystąpieniem znaku 'c'.
Zauważyłem, że wypisując adresy poszczególnych elementów w tablicy one się niczym nie różnią. Dodatkowo wypisuję wartość która nie wiem czym jest, opisałem ją roboczo "a co to jest?:".
Dlaczego adresy poszczególnych elementów tablicy nie różnią się? Dlaczego ta dziwna wartość jest pozostałą częścią łańcucha znaków?
Kod umieściłem tutaj: https://ideone.com/e.js/2YG29a żeby móc go uruchomić należy w prawym górnym roku kliknąć fork, a potem Run.
Na wszelki wypadek dodaję kod tutaj:
#include <iostream>
using namespace std;
void zadanie8(void);
char * znajdz(char *s, char c);
int main() {
// your code goes here
zadanie8();
return 0;
}
void zadanie8(void) {
//char inbuff[10];
char inchar;
char * wynik = NULL;
cout << "Podaj ciag znakowy do przeszukania: " << endl;
//cin >> inbuff;
char inbuff[] = "egeckecle";
cout << "Podaj wyszukiwany znak: " << endl;
//cin >> inchar;
inchar = 'c';
wynik = znajdz(inbuff, inchar);
if (wynik != NULL) {
cout << "Tekst wystepujacy po drugim wystapieniu wyszukiwanego znaku (pierwszy to szukany znak): " << endl;
cout << wynik << endl;
}
else {
cout << "Nie znaleziono drugieo wystpienia znaku!" << endl;
}
}
char * znajdz(char *s, char c) {
char * wynik = NULL;
int cnt = 0;
while (*s++ != '\0') {
cout << "wartosc: " << *s
<< "; adres: " << &s
<< "; a co to jest?: " << s
<< endl;
if (*s == c) {
cnt++;
if (cnt == 2) {
wynik = s;
break;
}
}
}
return wynik;
}