Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83

    [C] invertire una stringa

    Salve a tutti,
    mi trovo con un problema piuttosto banale ma che non riesco a risolvere..
    Ho una stringa (array di caratteri) e ne devo invertire il contenuto..
    Se ad esempio ho la stringa "ciao" , la seconda stringa deve contenere "oaic"

    Ho fatto una cosa del genere,ma non funziona..

    int main(){

    char par1[10];
    char par2[10];

    scanf("%s",&par1);

    int j=strlen(par1)-1;

    for(int i=0;i<strlen(par1);i++)
    par2[j]=par1[i];
    j--;
    }

    par2[strlen(par2)]='\0';
    }

    Il programma non funziona, l'esecuzione si blocca stampando 'segmentation fault'

    Come posso risolvere il problema ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    non l'ho testato ma proverei così

    int main(){

    char par1[10];
    char par2[10];

    scanf("%s",&par1);

    int j=strlen(par1)-1;

    z=j;

    for(int i=0;i<z;i++){
    par2[j]=par1[i];
    j--;
    }

    par2[z]='\0';
    }

  3. #3
    Occhio...
    codice:
    scanf("%s",par1)
    Comunque, ecco come lo farei io.
    codice:
    #include <stdio.h>
    
    int main(void)
    {
        char str1[10];
        char str2[10];
        char * rp;
        char * wp;
        size_t str1len;
        gets(str1);
        str1len=strlen(str1);
        str2[str1len]=0;
        for(rp=str1,wp=(str2+str1len-1);*rp;rp++,wp--)
            *wp=*rp;
        puts(str2);
        return 0;
    }
    Alternativa in-place.
    codice:
    #include <stdio.h>
    
    int main(void)
    {
        char str[10];
        char * pt1;
        char * pt2;
        char swap;
        size_t mystrlen;
        gets(str);
        mystrlen=strlen(str);
        for(pt1=str,pt2=(str+mystrlen-1);pt1<=(str+mystrlen/2);pt1++,pt2--)
        {
            swap=*pt1;
            *pt1=*pt2;
            *pt2=swap;        
        }
        puts(str);
        return 0;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    codice:
    #include <stdio.h>
    
    int main(){
    
    int z, j,i;
    char par1[10];
    char par2[10];
    printf("\t\t\ninserisci parola\n");
    scanf("%s",par1);
    
    printf("\n\t\t %s\n\n", par1);
    
    j=strlen(par1);
    printf("%d\n\n", j);
    z=j;
    
    for( i=0;i<z;i++){
    par2[i]=par1[j-1]; 
    j--;
    }
    par2[z]=0;
    
     printf("%s", par2);
    
    fflush(stdin);
    getchar();
    }
    cosi ho testato e funziona

    le ultime due righe servono solo a far premere un tasto all'utente prima di terminare il programma

    io quando non capisco dove sbaglio riempio il programma di printf su variabili sui contatori etc

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    83
    grazie a tutti siete stati gentilissimi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.