void my_strcpy(char *dst, char *src){while (*dst++ = *src++);}● ¿Es segura la implementación anterior? Si la invocación a ...
● char *destino= “a”,     *origen = “hola”;my_strcpy(destino,origen);a 0 h o l a 0destino origendst srcvoid my_strcpy(char...
char *destino= (char *)malloc(sizeof(char)*5);     *origen = (char *)malloc(sizeof(char)*5);strcpy(destino, “a”); strcpy(o...
Próxima SlideShare
Cargando en…5
×

05 punteros - cadena con problemas

249 visualizaciones

Publicado el

Ejemplo de cadenas en C. El ejemplo tiene varios problemas y se ven en la animación como se van sucediendo

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
249
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
1
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

05 punteros - cadena con problemas

  1. 1. void my_strcpy(char *dst, char *src){while (*dst++ = *src++);}● ¿Es segura la implementación anterior? Si la invocación a la función my_strcpy es la siguiente:char *origen= “a”,     *destino = “hola”;my_strcpy(origen,destino);● ¿Es correcta la definición anterior?Seminario de Lenguajes C Cadena de Caracteres – Un caso para analizar
  2. 2. ● char *destino= “a”,     *origen = “hola”;my_strcpy(destino,origen);a 0 h o l a 0destino origendst srcvoid my_strcpy(char *dst, char *src){while (*dst++ = *src++);return 1;}h 0 h o l a 0dst src1° iteraciónh o h o l a 0dst src2° iteraciónh o l o l a 0dst src3° iteraciónh o l a l a 0dst src4° iteraciónh o l a /0 a 0dst src5° iteracióndestino y origen estánapuntando a stringsliterales, constantes,que no se puedenmodificar.Debería serchar destino[]=”a”;Que es equivalente a{a, 0}
  3. 3. char *destino= (char *)malloc(sizeof(char)*5);     *origen = (char *)malloc(sizeof(char)*5);strcpy(destino, “a”); strcpy(origen, “hola”);my_strcpy(destino,origen);a 0 h odestinoorigendst srcvoid my_strcpy(char *dst, char *src){           while (*dst++ = *src++);           return 1;       }Ahora las cadenas tienen espacio para crecer sin pisarse.Además pueden estar en espacios no consecutivos de memoria.l a 0http://stackoverflow.com/questions/5645949/program-aborts-when-using-strcpy-on-a-char-pointer-works-fine-on-char-array

×