Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Inversione stringa

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    34

    [C] Inversione stringa

    Chi mi aiuta a capire perchè non stampa la stringa al contrario?
    il programma viene compilato, ma non stampa la stringa inversa

    codice:
    #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h>  
    #define LUNGHEZZA 10  
    
    char stringa[LUNGHEZZA]; 
    int i;   
    
    void invertistringa(char stringa[]){      
    
    for (i=(unsigned long) strlen(stringa);i=0;i--)      
    {        
    putchar(stringa[i]);          
    }            
    }           
    
    int main() {     
    printf ("Inserire stringa da invertire\n");     
    gets(stringa);     
    if (strlen(stringa)>LUNGHEZZA)     
    printf("errore stringa superiore alla lunghezza massima\n");     
    else     
    invertistringa(stringa);     
    return 0;     }

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    Ecco qui

    codice:
    #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h>  
    #define LUNGHEZZA 10  
    
    char stringa[LUNGHEZZA]; 
    int i;   
    
    void Attesa (char *);
    
    void invertistringa(char stringa[]){      
    int a = strlen(stringa);
    for (i = a; i >= 0;i--)      
    {        
    if (i != a)       
     putchar(stringa[i]);    
    }            
    }           
    
    int main() {     
    printf ("Inserire stringa da invertire\n");     
    gets(stringa);     
    if (strlen(stringa)>LUNGHEZZA)     
    printf("errore stringa superiore alla lunghezza massima\n");     
    else     
    invertistringa(stringa); 
    Attesa ("terminate");    
    return 0;     }
    
    void Attesa (char * attesa)
    {
    printf("\nPress any key to %s", attesa);         
    fflush(stdin);
    getchar();
    }
    due erroretti: alla fine il programma terminava subito, e poi il codice era sbagliato quando dovevi invertire la stringa.
    Ciao!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    34
    Grazie mille, molto gentile

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    Io guarderei il ciclo for con cui tu vorresti stampare lettera per lettera, in C ogni controllo iterativo cicla per vero, quindi logicamente è sbagliato, oltre al fatto che gli indici di un array di lunghezza N, vanno da 0 a N-1:

    codice:
    for (i = (unsigned long) strlen(stringa)-1; i >= 0; i--)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.