Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/05/2012, 10:15
adalsuper
 
Fecha de Ingreso: mayo-2012
Mensajes: 60
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Respuesta: Programa en C que añade a una cadena las lineas metidas

Cita:
Iniciado por cesar_casla Ver Mensaje
Hola! tenes varios errores:
1º En este caso la funcion limpiaBuffer() esta demas, de echo te trae problemas. Esto es porque en cierta forma el primer for ya esta limpiando el bufer
2º Toda cadena termina en '\0', lo cual no lo haces. Despues del primer for deberias agregarselo al arreglo linea
3º El segundo for esta demas, practicamente estas haciendo lo mismo q hace el strcat. Usa strcat o for, pero no las dos (yo sacaria el for ya que esta mal empleado para lo q queres hacer)
4º Si dejas a strcat vas a tener problemas. strcat espera dos cadenas(string) y como el arreglo cadena no tiene nada(al principio) te va a dar errores. Lo q podrias hacer es poner
Código C:
Ver original
  1. cadena[0]='\0';
antes del do-while
5º La condicion del while esta mal, tendrias q poner otra, ya q solo vas a poder ingresar una cadena con esa condicion

Creo q eso es todo, intenta hacer los cambios sino segui preguntando. Saludos

gracias por la respuesta, la cosa era que quería comprobar copiando de las 2 formas, pero se me olvido separar en 2 cadenas, una para el for y otra para el strcat xD
pero no sé cual es la expresion a meter dentro del bucle, se me sale la 1º vez y me coje de más caracteres así que no sé como seguir en el bucle

el resto de cambios están ya hechos:
Código C:
Ver original
  1. #define MAX 20
  2. #define MAX2 40
  3.  
  4.  
  5. /*prototipos*/
  6. void limpiaBuffer(void);
  7.  
  8. int main(){
  9.   int j;
  10.   char c;
  11.   char linea[MAX],cadena[MAX2],cadena2[MAX2];
  12.  
  13.   printf("Introduce cadenas hasta introducir una cadena vacia:\n");
  14.   cadena2[0]='\0';
  15.  
  16.   do{
  17.  
  18.     scanf("%c",&c);     //coge caracter
  19.  
  20.     for(j=0; j<MAX && c!='\n'; ++j){
  21.       linea[j] = c;
  22.       scanf("%c",&c);       //coge caracter
  23.     }
  24.     linea[j]='\0';
  25.  
  26.  
  27.     for(j=0; j<MAX && linea[j]!='\0';++j)
  28.       cadena[j] = linea[j];    
  29.  
  30.     strcat(cadena2,linea);
  31.    
  32.   }while(c!= '\n' );
  33.  
  34.  
  35.   printf("cadena total 1:\n %s\n",cadena);
  36.   printf("cadena total 2:\n %s\n",cadena2);
  37.  
  38.   return 0;
  39. }
  40.  
  41. void limpiaBuffer(void){
  42.   char c;
  43.   do{
  44.     c = getchar();
  45.   }while(c != '\n');
  46. }