PDA

Visualizza la versione completa : Sostituire una stringa di uno o più spazi con uno spazio singolo


shiichi
27-05-2013, 20:06
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:


#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?? :D
Grazie

Scara95
31-05-2013, 21:06
#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...

Alex'87
31-05-2013, 22:34
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:


#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?? :D


Ci sono diversi errori:



main()


int main()



int stringa[100];


Se vuoi una stringa perché hai dichiarato un array di int?
Usa char...



gets(stringa);

gets è un buco di sicurezza, usa fgets()



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.




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.



stringa[i+1]=='\b';


L'assegnazione si fa con un uguale solo.

Loading