SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: dadevil_g en Jueves 3 de Mayo de 2007, 05:12

Título: Mal Escrito O Mal Uso De Cadenas?
Publicado por: dadevil_g en Jueves 3 de Mayo de 2007, 05:12
: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:
Título: Re: Mal Escrito O Mal Uso De Cadenas?
Publicado por: Eternal Idol en Jueves 3 de Mayo de 2007, 18:39
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.