Odczytywanie łańcucha znaków od końca w C

0
#include<stdio.h>
#include<stdlib.h>


main()
{
	int a;
	char slowo[40];
	do 
	{
		printf("Podaj slowo: \n");
		scanf("%s",&slowo);
		printf("\nPodales slowo: %s\n\n",slowo);
	}
	while (slowo[0]!='%');

	system("pause");
}

Co muszę do tego dodać, aby czytało łańcuch znaków od końca?
Aha i jeszcze jedno, dlaczego program zawiesza mi się, gdy wpisuje taką instrukcję while:

while (slowo[0]!='%');
{
	printf("Podaj slowo: \n");
	scanf("%s",&slowo);
	printf("\nPodales slowo: %s\n\n",slowo);
}
0
lentek napisał(a)

Co muszę do tego dodać, aby czytało łańcuch znaków od końca?

Maszynę do przenoszenia się w czasie.
Nie da się odczytać z wejścia łańcucha od końca, bo danych z końca łańcucha jeszcze nie ma kiedy zaczynasz czytać.

0

Źle mnie zrozumiałeś, albo ja źle wytłumaczyłem.
Na samym początku program prosi, aby podać jakieś słowo, a później program podane słowo ma wyświetlić na ekranie od końca.

0

Jest różnica między "czytało" a "wypisywało".
Dodaj pętlę, np. for i wypisuj znak po znaku.

0

Dałem taką petle:

	for (slowo[a];slowo[0];slowo[a--])
		{
			printf("%s",slowo[a]);
		}

ale wyrzuca mi break-a na etapie tego fora

0

To nie jest prawidłowe użycie pętli for. Odsyłam do dokumentacji, jakiegoś tutoriala, lub notatek z zajęć (jeśli takowe masz).

0

Faktycznie, jakoś nie myślę
Ale zrobiłem już z wyrażeniami, ale mi program pomija taką petlę:

for (a=40;a<=0;a--)
{
	printf("%c",slowo[a]);
}
0
  1. Wchodze do petli ustawiam licznik na 40 - Ok
  2. Sprawdzam warunek czy 40 <= 0? Nie. Wychodze z petli.

Mysl dalej...

0

Hmmm... Program nie może Ci pominąć pętli. Może nie wykonać żadnej iteracji, ale nie pominąć.
Ogólnie idziesz w dobrym kierunku, ale widzę tutaj problem. Nie masz pewności, że wpisane prze użytkownika słowo będzie miało dokładnie 39 znaków. Powinieneś raczej iterować od końca wyrazu, a nie od końca tablicy. W bibliotece standardowej (po dołączeniu string.h) masz funkcję strlen(), która Ci powie jak długi jest ciąg znaków (wyłączając terminator, czyli bajt zerowy).
Musiałbyś wkleić cały kod żeby się zorientować co może być jeszcze nie tak.

0
Krycho napisał(a)
  1. Wchodze do petli ustawiam licznik na 40 - Ok
  2. Sprawdzam warunek czy 40 <= 0? Nie. Wychodze z petli.

Mysl dalej...

Właśnie to zobaczyłem, teraz mi działa, tylko wyświetla w miejsce, gdzie nie było żadnych znaków podanych jakieś swoje dziwne znaczki(podejrzewam, że wyświetla całą zawartość tablicy) Jak zrobić, aby wyświetlał mi tylko od ostatniego znaku, który został podany?

0
Kumashiro napisał(a)

Powinieneś raczej iterować od końca wyrazu, a nie od końca tablicy. W bibliotece standardowej (po dołączeniu string.h) masz funkcję strlen(), która Ci powie jak długi jest ciąg znaków (wyłączając terminator, czyli bajt zerowy).

0

Dzięki wielkie za pomoc, wszystko teraz ładnie śmiga

0

No to skoro sobie już z tym poradziłeś, to teraz wpisz wyraz "konstantynopolitańczykiewiczkówianeczka" i popatrz jak Twój program się ładnie sypie ;)

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