Element odwrotny o dowolnej liczbie liter

0

Hej, mam mały problem z kodem, chciałbym uzyskać wyraz w odwrotnej kolejnośći do tego, który wpisałem.
Program miał liczy ilość słów wpisanych przez autora na początku programu i później powinien zamienić kolejność liter, niestety po wielu nieudanych próbach moja pętla nadal nie daje efektów. Proszę o rady.

#include<stdio.h>
int main(void)
{
    int a,d;
    int i;
    printf("Podaj dlugosc slowa: ");
    scanf("%d", &a);
    char napis[a];
    char odwrocony[a];
    printf("Podane slowo ma %d znakow, %d\n", strlen(napis), sizeof napis);
    printf("Podaj wyraz jakis!\n");
    scanf("%s", &napis);
    printf("Podane slowo ma %d znakow\n", strlen(napis));
    d = strlen(napis);
    for(i=0; i<d; i++)
{


        odwrocony[i]= napis[d-i];
        printf("%c", odwrocony);
}

    return 0;
}

Pozdrawiam

dodanie znacznika <code class="c"> - @furious programming

1
#include<stdio.h>

int main()
  {
    char napis[1000];
    char odwrocony[1000];
    printf("Podaj wyraz jakis: ");
    scanf("%999s",&napis);
    int i,len=strlen(napis);
    printf("Podane slowo \"%s\" ma %d znakow\n",napis,len);
    for(i=0;i<len;++i) odwrocony[i]=napis[len-1-i];
    odwrocony[len]=0;
    printf("%s\n",odwrocony);
    return 0;
  }
0

Nie wiem, czy to jest powód, ale funkcja strlen wymaga dołączenia pliku nagłówkowego string.h

1
char napis[a];
char odwrocony[a];

Niestandardowy kod. Rozmiar tablicy powinien być stałą. Poza tym napis o długości a potrzebuje a+1 miejsc w tablicy.

printf("Podane slowo ma %d znakow, %d\n", strlen(napis), sizeof napis);

Co to jest strlen(napis)? Przecież tego napisu jeszcze nie ma, a w tablicy napis są śmieci.

for(i=0; i<d; i++)
{
    odwrocony[i]= napis[d-i];

Dla i równego 0, napis[d-i] wskazuje na null, nie na ostatnią literę.

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