Wczytanie stringa i wypisanie go wspak - optymalizacja zadania

0

Witam,

Ma ktoś pomysł jak trochę przyśpiszyć poniższy kod??
ZAdanie polega na wczytaniu stringa i wypisaniu wspak.

 
#include <stdio.h>
#include <string.h>

int main()
{
int dl;
char tab[1001];

    while( scanf("%s", tab) != EOF)
    {
        dl = strlen(tab);
        while(dl--) printf("%c", tab[dl]);
        printf("\n");
    }

return 0;
}
0

Jeśli I/O nie jest buforowane to zapewne odwrócenie stringa i wypisanie całego będzie szybsze niż pisanie literka po literce.

0

o dziękuje , dzięki Panu. udało się ponad 2krotnie zwięszyć predkość. z 0.13s zszedłem do 0.06s

a tu jest kod poprawiony :

 
#include <stdio.h>
#include <string.h>

void mySwap(char* w1, char* w2)
{
char tmp;
    tmp = *w1;
    *w1 = *w2;
    *w2 = tmp;
}

int main()
{
int dl;
char tab[1001];
int i;

    while( scanf("%s", tab) != EOF)
    {
        dl = strlen(tab);
        for(i = 0; i < dl / 2; ++i)
            mySwap(&tab[i], &tab[dl-i-1]);
        puts(tab);
    }

return 0;
}
0

Możesz jeszcze szybciej pozbywając się strlen. Zauważ że ostatni znak stringa to jest zawsze \0 więc możesz zrobić pętlę dopóki tab[i] nie jest 0

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