[code][code]Hola,
Tengo hecho este programa para suprimir espacios en blanco, y funciona correctamente; sin embargo tengo una duda:
Por que si en lugar de utilizar una única cadena:
for( i=0;texto[i]!='\0';i++ )
{
if( texto[i] == ' ' )/* si hay un espacio*/
{
for( j = i+1 ; texto[j] !='\0' ; j++ )
{
texto[j-1] = texto[j];
}
texto[j-1] = '\0';
}
}
printf( "Sin espacios : %s\n" ,texto );
system( "pause" );
[/code]
utilizo dos cadenas y una la vuelvo en otra mediante strcpy;
for( i = 0 ; texto[i] != '\0' ; i++ )
{
if( texto[i] == ' ' )/* si hay un espacio*/
{
for( j = i+1 ; palabra[j] != '\0' ; j++ )
{
palabra[j-1] = palabra[j];
}
palabra[j-1] = '\0';
}
}
printf( "Sin espacios : %s\n" , palabra )
;[/code]
al meter por ejemplo la frase hola mundo feliz, no funciona en el segundo caso?
muchas gracias
¡Hola!
No funciona bien porque lías las variables. Pones:
if( texto[i] == ' ' )/* si hay un espacio*/
Sin embargo, en el bucle for de después los espacios se los quitas a palabra, no a texto , por tanto la modificación se hará cuando encuentre un espacio en la cadena original, y no en la que estás editando, y te dará mal. Quedaría así:
for( i = 0 ; texto[i] != '\0' ; i++ )
{
if( palabra[i] == ' ' )/* si hay un espacio*/
{
for( j = i+1 ; palabra[j] != '\0' ; j++ )
{
palabra[j-1] = palabra[j];
}
palabra[j-1] = '\0';
}
}
Saludos!
Muchísimas gracias, una respuesta clarísima
saludos