Przypisywanie char

0

Witam, chciałem zamienić kolejność znaków, program się kompiluje, ale nie działa. Proszę o wskazanie błędów ;)

	char a[20];
	cin.getline(a, 20);
	char c;
	int b=strlen(a);


	for(int i=0; i<strlen(a)/2; i++)
	{
		a[b]=c;
		a[b]=a[i];
		a[i]=c;

		b--;

	} 
1

Nie powinno być:

c=a[b];

?

3

Nigdzie nie przypisujesz wartości do c.

        a[b]=c;
        a[b]=a[i];

dwa przypisania pod rząd, pierwsze można usunąć.

a[b] w pierwszej iteracji to znak kończący stringa ('\0'), nadpisujesz go jakimś śmieciem. Jeśli jednak zamieniłbyś go z pierwszym znakiem, uzyskałbyś 0-znakowy string. Raczej nie o to chodziło.

Wywoływanie strlen(a) w warunku pętli jest niekorzystne - będzie wywołane dla każdej iteracji.

Zamiast się męczyć użyj std::string i reverse iteratorów:

string s;
getline(s);
cout << s << "\n" << string(s.crbegin(), s.crend()) << endl;

http://melpon.org/wandbox/permlink/ifmJjJ2X6eeSz1U4

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