Jak odwrócić napis w tablicy znaków w C ?

0

Nie mam pomysłu jak odwrócić ten napis, ponieważ nie znam rozmiaru tablicy, a w C niestety nie ma chyba takiego czegoś jak tablice.length ?

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

int main()
{
	char napis[1000];
	int rozmiar = 0;
	int i=0;
	printf("Podaj napis: ");
	scanf("%s", &napis);
	printf("Napisales: ");
	printf("%s", napis);
	printf("\nOdwrocony napis: ");

	//jak odwrocic napis
	printf("\n");
	system("PAUSE");
	return 0;
}
 
0

Przecież to odkrycia długości takiego napisu służy strlen.

0

a jeśli nie chcesz ułatwiać sobie życia, albo nie pozwolono ci include'ować string.h, to pamiętaj, że każda tablica charów (o ile poprawnie stworzona) kończy się znakiem \0
dzięki temu np. taka pętla:

while(napis[i++] != '\0') rozmiar++; 

policzy ci długość twojego stringa ;)

ach, i wpisując przez scanf całego stringa nie potrzebujesz referencji, tj. kod

scanf("%s", napis);

też zadziała.
Oraz to:

 printf("Napisales: ");
        printf("%s", napis);

można połączyć:

 printf("Napisales: %s", napis);

No i takie czepianie się, nie rozumiem dlaczego znak nowej linii dajesz na początku, zdecydowanie lepiej dawać na końcu wcześniejszego printa, taki zapis jest bardziej przejrzysty na przykład w takim przypadku: * "\nad" "ad\n" *

0

oto gotowe rozwiązanie:

void reverse(char * tab, char * odwr) {
	int i,j;
	int lenghtTab = strlen(tab);
	for(i = 0, j = lenghtTab - 1); i < lenghtTab; i++, j--) {
		odwr[i] = tab[j];
	}
}
 

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