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

    Sostituire una stringa di uno o più spazi con uno spazio singolo

    Salve a tutti...sto seguendo una guida per il linguaggio C e mi chiede di svolgere il seguente esercizio:
    Scrivete un programma che copi il suo input sul suo output, sostituendo una stringa di uno o
    più spazi con uno spazio singolo.

    Sono arrivato a questo:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    main()
    {
    	int stringa[100];
    	gets(stringa);
    	int i= 0;
    	int n= 0;
    	while(n=0)
    	{
    		if (stringa[i] == ' ' ,stringa[i+1] == '  ')
    		{
    			stringa[i+1]=='\b';
    			n=1;
    		}
    		i++;
    	}
    	puts(stringa);
    }
    quando vado ad eseguirlo,non ottengo il risultato che mi aspettavo...suggerimenti??
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    #include <stdio.h>
    
    main()
    {
        char stringa[100];
        
        fgets(stringa, 100, stdin);
        
        char *in, *out;
        in = out = stringa;
        
        while((*in) != '\0') {
            (*out) = (*in);
            out++;
            if((*in) == ' ')
                while((*in) == ' ') in++;
            else
                in++;
        }
        (*out) = '\0';
        
        
        printf("%s", stringa);
        return 0;
    }
    Questo è fatto meccanicamente, considerando la stringa coma un array di carattere che effettivamente è...

    Per ottimizzarlo puoi copiare a parole al posto che a carattere...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Sostituire una stringa di uno o più spazi con uno spazio singolo

    Originariamente inviato da shiichi
    Salve a tutti...sto seguendo una guida per il linguaggio C e mi chiede di svolgere il seguente esercizio:
    Scrivete un programma che copi il suo input sul suo output, sostituendo una stringa di uno o
    più spazi con uno spazio singolo.

    Sono arrivato a questo:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    main()
    {
    	int stringa[100];
    	gets(stringa);
    	int i= 0;
    	int n= 0;
    	while(n=0)
    	{
    		if (stringa[i] == ' ' ,stringa[i+1] == '  ')
    		{
    			stringa[i+1]=='\b';
    			n=1;
    		}
    		i++;
    	}
    	puts(stringa);
    }
    quando vado ad eseguirlo,non ottengo il risultato che mi aspettavo...suggerimenti??
    Ci sono diversi errori:

    codice:
     
    main()
    int main()

    codice:
    int stringa[100];
    Se vuoi una stringa perché hai dichiarato un array di int?
    Usa char...

    codice:
    gets(stringa);
    gets è un buco di sicurezza, usa fgets()

    codice:
    while(n=0)
    Questo ciclo non verrà mai eseguito: stai assegnando 0 alla variabile n. E zero significa "falso".
    Forse volevi scrivere n == 0?
    Per quello che devi fare tu però è consigliato un ciclo for.


    codice:
    if (stringa[i] == ' ' ,stringa[i+1] == '  ')
    No. La sintassi è if (condizione1 && condizione2). Il carattere '' non mi pare esista. E non controlli un eventuale index of out bounds.

    codice:
    stringa[i+1]=='\b';
    L'assegnazione si fa con un uguale solo.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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 © 2024 vBulletin Solutions, Inc. All rights reserved.