Bu fonksiyondaki hata nedir?

Function void swap_string(char* a) {
    int size;
    for(int i=0; a[i]!='\0'; i++)
        size = i;
    
    char buff;
    for(int i=0; a[i] < size/2; i++) {
        buff = a[i];
        a[i] = a[size-i];
        a[size-i] = buff;
    }
}
Mainchar array[] = "PRIME";
    puts(array);
    swap_string(array);
    puts(array);

Bekledğim çıktı sonucu şu şekilde:

ConsolePRIME
EMIRP

Ancak sonuç şu şekilde:

ConsolePRIME
PRIME

i < size / 2

1 Beğeni

Bu arada size’ı 1 eksik hesaplıyorsunuz galiba onu da düzeltebilirsiniz isterseniz. Bir de empty string gelirse durumunu da düşünebilirsiniz hazır düzeltiyorken :).

1 Beğeni

Evet onun farkındayım. Ama programın akışına zarar vermiyor diye düzeltmemiştim. Okuyana zorluk çıkartabilir ama. Düzelteceğim.

Ne demek istediğinizi tam anlayamadım. Biraz daha açabilir misiniz?

Eğer a = "" olursa demek istemiştim.

1 Beğeni