Autor
|
Tema: uso de strcat (Leído 3,350 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos, tengo una duda sobre el uso de la función strcat. si yo tengo una cadena inicializada en NULL, *cadena = NULL, y con un ciclo while quiero ir agregadole caracter por caracter podria hacer esto con el strcat que me vaya concatenando al final de la cadena caracter por caracter?? algo como asi: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i = 0; char *cadena = NULL,c[5],car; while(i < 5) { i++; } return 0; }
es que el codigo no funciona y creo que es por el strcat gracias
|
|
|
En línea
|
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
ya vi que mi error era en que no le habia asignado memoria a la cadena, pero ahora por ejemplo si le ingreso las letras a, b, c, d, e. cuando le pido que imprima ya la cadena completa me imprime con basura #Wqabcde, #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i = 0; char *cadena = NULL,buffer[5],car; while(i < 5) { i++; } return 0; }
|
|
« Última modificación: 21 Diciembre 2013, 20:28 pm por m@o_614 »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
vi que mi error era en que no le habia asignado memoria a la cadena, pero ahora por ejemplo si le ingreso las letras a, b, c, d, e. cuando le pido que imprima ya la cadena completa me imprime con basura #Wqabcde 1) Cuando reservas un bloque de memoria con malloc su contenido es no definido o basura. 2) strcat concatena las cadenas agregando la segunda al final de la primera. Para ello debe primero encontrar el carácter '\0' que indica el final de esta. 3) Si piensas leer cinco caracteres y almacenarlos como una cadena debes reservar un byte adicional para almacenar ahí el terminador de cadena '\0'. En base a ello ya puedes solucionar el problema en tu programa. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
muchas rir3760 ya le cambie el malloc por el calloc para que se inicialice sin basura, una última duda, como en el codigo primero le pido el valor de car y despues le hago un "cast" con sprintf para que sea una cadena, no seria mejor si simplemente quitar el sscanf y el sprintf, me quedo con el fgets y despues se lo concateno a con strcat, porque como tiene que ser tipo cadena creo que el sprintf y el sscanf están de más #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i = 0; char *cadena = NULL,buffer[5]; while(i < 5) { i++; } return 0; }
gracias
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
una última duda, como en el codigo primero le pido el valor de car y despues le hago un "cast" con sprintf para que sea una cadena, no seria mejor si simplemente quitar el sscanf y el sprintf, me quedo con el fgets y despues se lo concateno a con strcat Ya que el programa solo colecta caracteres para formar una cadena basta con scanf: #include <stdio.h> #include <stdlib.h> int main(void) { int i; char *p; for (i = 0; i < 5 && scanf(" %c", p + i ) == 1; i ++) ; p[i] = '\0'; return EXIT_SUCCESS; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
strcat
Programación C/C++
|
<<<-Basura->>>
|
4
|
5,786
|
26 Abril 2011, 05:37 am
por <<<-Basura->>>
|
|
|
Cabecera HTTP + Winsock + strcat()
Programación C/C++
|
Riki_89D
|
5
|
3,977
|
6 Octubre 2011, 11:43 am
por madpitbull_99
|
|
|
Problema con strcat
« 1 2 »
Programación C/C++
|
DickGumshoe
|
12
|
6,205
|
23 Enero 2012, 22:28 pm
por DickGumshoe
|
|
|
Problemas con strcmp y strcat
Programación C/C++
|
francisco11
|
1
|
2,836
|
31 Mayo 2013, 19:06 pm
por rir3760
|
|
|
Espacios en concatenación strcat.
« 1 2 »
Programación C/C++
|
programator11
|
13
|
7,702
|
7 Agosto 2014, 20:05 pm
por rir3760
|
|