04.06.2008 | 22:12:22
immagine
Ing. Emanuele Scapin

C, gestione di una stringa, calcolo della lunghezza e invertirne la sequenza di caratteri.
  • Data un stringa letta da tastiera si determini la lunghezza della stringa stessa e poi la si inverti, ovvero di inverta la sequenza dei caratteri.
    Si proponga una soluzione che NON faccia uso della libreria string.h.


  • Non potendo utilizzare la libreria string.h e il metodo strlen si provvede a creare una funzione lung che restituisca la lunghezza della stringa.
    Dovendo inoltre invertire la stringa si implementa una procedura inverti che acquisita la stringa, per indirizzo tramite il puntatore, la restituisca invertita; questa procedura utilizza una procedura di scambio.

    #include <stdio.h>
    #include <stdlib.h>
    
    void scambia(char *a, char *b) {
        char tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    int lung(char *s) {
        int i=0;
    
        while(s[i]!='\0'){
            i++;
        }
        
        return i;
    }
    
    void inverti(char *s1) {
        int i=0;
        for(i=0; i<(lung(s1)/2); i++) {
            scambia(&s1[i], &s1[lung(s1)-i-1]);
        }
    }
    
    int main(int argc, char** argv) {
        // questa riga serve solo a chi usa il compilatore cygwin con Windows.
        setvbuf(stdout, 0, _IONBF, 0);
        
        char str[10];
        printf("introdurre una stringa ");
        scanf("%s", str);
        
        printf("stringa %s letta, lunga %d caratteri\n", str, lung(str));
        inverti(str);
        printf("stringa invertita %s\n", str);
        return (EXIT_SUCCESS);
    }
            

© Emanuele Scapin 2008-2018

 

Valid HTML 4.01! Valid CSS!