Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    C - chi mi sa dire perche è sbagliato?

    ho scritto questo codice con la funzione, chi mi sa dire perche non va?

    main
    ----------------------

    #include <stdio.h>
    #include <stdlib.h>
    extern char *inverti(char *);

    void main()
    {
    char stringa[30];
    printf("\n\nIMMETTI UNA STRINGA: ");
    scanf("%s", stringa);
    *stringa = inverti(stringa);
    printf("stringa invertita --> %s ");
    getchar();
    }
    funzione
    -----------------------------
    char *inverti(char *str)
    {
    int i;
    char *str_out;
    int len, len_2;
    len = strlen(str);
    len_2= len;
    str_out=(char*)malloc(len+1);
    for(i=0; i<len; i++, len_2--)
    str_out[i] = str[len_2];
    str_out[i] = '\0';
    return str_out;

    }

    vi prego help me

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Forse ho capito... praticamente copia all'inizio della stringa invertita il '\0' finale della stringa originale.

    1 minuto e ti posto il codice

  3. #3
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Ecco il codice corretto, tabulato e commentato.

    L'unica differenza è che non ho usato un file esterno, e quindi ho usato un prototipo per la funzione.

    Codice PHP:
    #include <stdio.h> 
    #include <stdlib.h> 
    //Ti ho messo anche <string.h> per strlen()
    #include <string.h>
    //extern char *inverti(char *); 

    //prototipo
    char *inverti(char *str);

    void main() 

        
    //Contiene la stringa originale
        
    char stringa[30]; 

        
    //Richiede di immettere una stringa
        
    printf("\n\nIMMETTI UNA STRINGA: "); 
        
    //Input della stringa
        
    scanf("%s"stringa); 

        
    //Altro errore:
        //Io lo ho corretto usando strcpy()
        
    strcpy(stringa,inverti(stringa));

        
    //Output della stringa
        //Altro errore: ti sei dimenticata l'argomento della stringa
        
    printf("stringa invertita --> %s "stringa); 
        
    getchar(); 



    char *inverti(char *str

        
    //contatore
        
    int i
        
    //puntatore al risultato della funzione
        
    char *str_out
        
    int lenlen_2

        
    //Imposta len sulla lunghezza della stringa
        
    len strlen(str); 
        
    //Imposta len_2 su len -1, perchè gli array partono da [0]
        //...il tuo errore ;)
        
    len_2len 1
        
    //Alloca uno spazio sufficente per contenere la stringa invertita
        //  + 1 per comprendere il '\0' finale
        
    str_out=(char*)malloc(len+1); 

        
    //Ciclo di inversione
        
    for(i=0i<leni++, len_2--) 
            
    str_out[i] = str[len_2]; 
        
    //Termina la stringa con uno '\0'
        
    str_out[i] = '\0'
        
    //restituisce la stringa invertita
        
    return str_out




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.