DOMANDA Eliminare gli spazi da una frase con programma in C

Pubblicità

dalca

Nuovo Utente
Messaggi
15
Reazioni
2
Punteggio
4
Buonasera a tutti,
sto cercando, per esercizio, di fare un programma che immessa una frase, mi ritorna la stessa frase senza gli spazi.
Il listato di quanto sono riuscito a fare è il seguente:
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX 100

int main(void) {
    char frase[MAX] = "Frase di prova del programma";
    char modificata[MAX];
    
    int i;
        for(i = 0; frase[i] != '\0'; i++) {
        if(!isspace(frase[i])) {
            modificata[i] = frase[i];
        }
        else {
            modificata[i] = frase[i + 1];
        }
    
    }
    
    printf("\n\nLa frase modificata è: %s", modificata);
    
    exit(0);
}

Il problema è che mi raddoppia tutte le lettere iniziali delle parole.

Qualcuno può indicarmi come risolvere?

Grazie
 
Ciao, la stringa senza spazi dovrebbe essere più corta di quella originale, giusto!? Invece con quell'if/else aggiungi qualcosa ad ogni iterazione sulla stringa originale.
Inoltre cosa accadrebbe se nella stringa originale ci fossero due spazi consecutivi?
Le prime cose che mi vengono in mente per risolvere sono:
- utilizzare indici separati per le due stringhe;
- o tenere conto dei caratteri spazio incontrati fino a quel momento.


P.S.
Non dimenticare il terminatore di stringa!
 
else { modificata = frase[i + 1]; }
questa parte puoi eliminarla, non serve
per la stringa che costruisci devi usare un indice diverso inizializzato a zero: quando trovi un carattere non-spazio copi l'i-esimo carattere della stringa iniziale e poi lo incrementi
 
Pubblicità
Pubblicità
Indietro
Top