Cita:
Iniciado por cesar_casla
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
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#define MAX 20
#define MAX2 40
/*prototipos*/
void limpiaBuffer(void);
int main(){
int j;
char c;
char linea[MAX],cadena[MAX2],cadena2[MAX2];
printf("Introduce cadenas hasta introducir una cadena vacia:\n"); cadena2[0]='\0';
do{
scanf("%c",&c
); //coge caracter
for(j=0; j<MAX && c!='\n'; ++j){
linea[j] = c;
scanf("%c",&c
); //coge caracter }
linea[j]='\0';
for(j=0; j<MAX && linea[j]!='\0';++j)
cadena[j] = linea[j];
}while(c!= '\n' );
printf("cadena total 1:\n %s\n",cadena
); printf("cadena total 2:\n %s\n",cadena2
);
return 0;
}
void limpiaBuffer(void){
char c;
do{
}while(c != '\n');
}