• Domingo 15 de Diciembre de 2024, 03:07

Autor Tema:  Mal Escrito O Mal Uso De Cadenas?  (Leído 872 veces)

dadevil_g

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Mal Escrito O Mal Uso De Cadenas?
« en: Jueves 3 de Mayo de 2007, 05:12 »
0
:hola:  hola a todos, como ven tengo muchas inquietudes y el otro dia me puse a hacer un programita que hiciera lo siguiente
Sin uso de argumentos, realizar un programa que lea un archivo
origen.txt y escriba el texto con puntos a un archivo destino.txt
Por ejemplo.
origen.txt
Iniciar una nueva discusión en C/C++
destino.txt
Iniciar.una.nueva.discusion.en.C/C++

Y esto lo logre mediante el siguiente codigo
Código: Text
  1.  
  2. while ((ch=fgetc(fp)) != EOF)
  3.     if (ch==' ')
  4.       fputc('.',fp2);
  5.     else
  6.       fputc(ch,fp2);
  7.  
  8.  

Pero eso es trabajando con archivos, mi pregunta es como se debe de hacer para trabajar con una cadena de texto ingresada desde el teclado?
Tengo algo de codigo pero no se porque no me funciona.

Código: Text
  1.  
  2. #include "stdafx.h"
  3. #include "stdio.h"
  4. #include "conio.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7.  
  8. void adiciona(char *ptrS);
  9.  
  10.  
  11. int _tmain(int argc, _TCHAR* argv[])
  12. {
  13.   char palabra[150];
  14.   int i=0, t;
  15.   printf("Escriba una frase para añadir un caracter\n");
  16.   scanf("%s", palabra);
  17.   while(("%s",palabra)!='\0')
  18.   {
  19.     t=strlen(palabra);
  20.     for(i=0; i<=t; i++)
  21.     {
  22.       if((palabra[i])==' ')
  23.       {
  24.         puts("a ",palabra );
  25.       }
  26.     }
  27.   }
  28.   printf("Palabra transformada\n");
  29.   printf("%s",palabra);
  30.   getchar();
  31. }
  32.  
  33.  



Si alguien me puede decir onta el error le agradecería bastante. :comp:
Salu2....  \"UN PROBLEMA A LA VEZ\"; empieza por lo sencillo, luego te verás haciendo lo imposible.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Mal Escrito O Mal Uso De Cadenas?
« Respuesta #1 en: Jueves 3 de Mayo de 2007, 18:39 »
0
Nunca vas a encontrar un espacio dentro de palabra (ya que es eso, solo una palabra, scanf %s corta al encontrar un espacio, un tabulador o un salto de linea). Tampoco te devuelve un caracter (estas comprobando contra \0) ...

Podes probar a usar un solo scanf:

Código: Text
  1.  
  2. scanf("%[a-z A-Z]", frase);
  3.  
  4.  

Por otro lado puts solo acepta un parametro (una cadena) a imprimir en stdout.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.