Stringhe

di il
2 risposte

Stringhe

Sono mancato alla lezione di oggi riguardante le stringhe e ho provato a fare un esecizio usando le dispense ma il programma non va.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VAL 32
int main(){
    /*Scrivere  un  programma  che  acquisisca  una  stringa  e  la  modifichi  trasformando  tutti  i  caratteri  minuscoli  in
    maiuscoli e viceversa (lasciando inalterati tutti gli altri caratteri).*/
    char parola[5];
    int i;
        printf ("\nInserire parola da convertire: ");
        scanf ("%c", &parola[1]);
    for (i=1; ; i++){
        if (parola[i]>65 && parola[i]<90){
            parola[i]+32;
            printf ("\n%c", parola[i]);
            if (parola[i]>97 && parola[i]<122){
                parola[i]-32;
                printf ("\n%c", parola[i]);
            }
        }
        else{
            printf ("\n%c", parola[i]);
        }
    }
    return 0;
}
cosa ho sbagliato?

2 Risposte

  • Re: Stringhe

    maxilrosso ha scritto:


    Dovresti intanto sostituire
    
    scanf ("%c", &parola[1]);
    
    con
    
    scanf ("%s",parola);
    
    Per non parlare del fatto che tutto il resto del programma è inguardabile (senza offesa)
    E' un primo programma senza aver seguito la lezione
  • Re: Stringhe

    maxilrosso ha scritto:


    Ecco alcune cose:

    1) forse ti sfugge che il primo indice di un array in C è 0 e non 1. e quindi anche volendo solo il primo carattere della parola, anche parola[1] non andrebbe bene

    2) tu dichiari una stringa di dimensione 5. Di per sè non è un errore, il fatto è che così stai dando per scontato che le parole inserite non abbiano mai più di 5 lettere.
    Io fare un
    
    #define MAX_LUNGH 28
    
    per poi dichiarare la variabile così:
    
    char parola[MAX_LUNGH];
    
    Si, lo so, svista mia

    maxilrosso ha scritto:


    3) per vedere se una lettera è maiuscola o minuscola, esistono le funzioni
    
    int isupper(char);
    int islower(char);
    
    ed è meglio usare quelle lì già pronte e controllate
    Non ne sapevo l'esistenza grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte