Gestione delle stringhe

Gli array sono alla base delle gestione delle stringhe nel linguaggio C. Le stringhe sono sequenze di caratteri alfanumerici da considerarsi come un oggetto unico. Il C non mette a disposizione del programmatore il tipo stringa ma ne è richiesta la gestione come array di char (e questo non semplifica certo la vita!!).

Trattandosi di array e non di variabili primitive non ne è possibile l'assegnazione, la concatenazione o il confronto in modo immediato. Per fortuna è disponibile il file di include string.h che fornisce una serie di funzioni per la manipolazione delle stringhe.

Come se non bastasse, in un array di caratteri rappresentante una stringa occorre inserire il simbolo \0 che rappresenta il terminatore di stringa, pena il cattivo funzionamento delle funzioni disponibili per l'elaborazione delle stringhe.

Nell'header del programma è quindi necessario aggiungere

#include <string.h>

che ci mette a disposizioni funzioni come:
strcpy(s1,s2) che copia la stringa s2 nella stringa s1 (come un'assegnazione)
strcat(s1,s2) che concatena s2 alla stringa s1
strlen(s) che restituisce la lunghezza della stringa s
strcmp(s1,s2) che confronta la stringa s1 con la stringa s2

Per meglio comprenderne il funzionamento stiliamo un programma che fissa il contenuto di una stringa (stringa1), acquisisce il contenuto di una seconda stringa (stringa2), visualizza la lunghezza delle due stringhe e poi le confronta. Se le due stringhe risultano diverse le concatena e le copia in una terza stringa (nominativo) che viene visualizzata, altrimenti stampa il messaggio "Le stringhe sono uguali".

#include 
#include 
#include 
#include 

int main()
{   char stringa1[10]="Pippo";
    char stringa2[10];
    char nominativo[20]="";

    printf("Immetti la seconda stringa : "); scanf("%s",&stringa2);
    printf("Lunghezza stringa 1 -%10s- %2d : \n",stringa1, strlen(stringa1));
    printf("Lunghezza stringa 2 -%10s- %2d : \n",stringa2, strlen(stringa2));
    if (strcmp(stringa1,stringa2))
    {  strcat(stringa1," ");
       strcat(stringa1,stringa2); 
       strcpy(nominativo,stringa1);  
       printf("\nNominativo completo: %20s \n",nominativo);
    }
    else
        printf("Le stringhe sono uguali\n");
        
    system("PAUSE");
    return 0;
}

Scrivi email per il tutor dei corsi
Scrivi email per l'amministratore del sito

Torna all'indice del corso
Ultima modifica: 08/04/2010