elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Fallo de segmentación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fallo de segmentación  (Leído 4,011 veces)
W0lFy


Desconectado Desconectado

Mensajes: 551



Ver Perfil WWW
Fallo de segmentación
« en: 20 Octubre 2010, 20:49 pm »

Quisiera cambiar un caracter en una cadena de caracteres, y me da fallo de segmentación. ¿ que ocurre?

char *cadena="Cliente: ";
cadena=cadena+sizeof((char)*2);
*cadena='a';
printf("caracter %c, *cadena);

................-> fallo de segmentación.


Que ocurre? como se puede cambiar en C un caracter de una cadena de longitud dinamica? Un saludo


« Última modificación: 20 Octubre 2010, 20:51 pm por ¤¤¤K@NuTöM@N¤¤¤ » En línea

K@NuT0
ace332

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Fallo de segmentación
« Respuesta #1 en: 20 Octubre 2010, 21:10 pm »

Hola
Respondiendo a tu pregunta, la cadena "Cliente:" C la ubica en un lugar de la memoria que no puede ser modificada en tiempo de ejecución. Si deseas modificar la cadena debes definirla como un arreglo de chars:

Código
  1. char cadena[]="Cliente:";
  2.  

Ahora, quieres hacer "cadenas de longitud dinámicas" mmmmm...

Los strings en C son cadenas de caracteres terminados con un 0. Osea que puedes agregar o quitar caracteres a la cadena desplazando ese cero...

Te recomiendo darle una revisada a la biblioteca string.h

En fin, espero haber ayudado un poco

Saludos.


« Última modificación: 20 Octubre 2010, 21:45 pm por bigfish781 » En línea

W0lFy


Desconectado Desconectado

Mensajes: 551



Ver Perfil WWW
Re: Fallo de segmentación
« Respuesta #2 en: 21 Octubre 2010, 01:09 am »

veamos el codigo:



Código
  1.  
  2.  
  3. #include <pthread.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <math.h>
  7. #include <string.h>
  8.  
  9. struct tcola
  10. {
  11.  char trabajo[80];
  12.  struct tcola *sig;
  13. };
  14. void crear(struct tcola **cola)
  15. {
  16.  *cola = NULL;
  17. }
  18.  
  19. int vacia(struct tcola *cola)
  20. {
  21.  return (cola == NULL);
  22. }
  23. void encolar(struct tcola **cola, char elem[80])
  24. {
  25.  struct tcola *nuevo;
  26.  
  27.  nuevo = (struct tcola *) malloc(sizeof(struct tcola));
  28.  nuevo->clave=elem;
  29.  
  30.  if (*cola == NULL)
  31.  nuevo->sig = nuevo;
  32.  else {
  33.    nuevo->sig = (*cola)->sig;
  34.    (*cola)->sig = nuevo;
  35.  }
  36.  (*cola) = nuevo;
  37. }
  38. void desencolar(struct tcola **c1,char elem[])
  39. {
  40.  struct tcola *aux;
  41.  elem= (c1*)->sig->clave;
  42. if ((*c1) == (*c1)->sig)
  43. {
  44.    free(*c1);
  45.    *c1 = NULL;
  46.  }
  47. else
  48. {
  49.   aux=(*c1);
  50.   (*c1)= aux->sig;
  51. free(aux);
  52. }
  53. printf("en desencolar %s\n",elem);
  54. }
  55.  
  56. void cliente(int indiceCliente)
  57. {
  58.    char cadena[]="hola que tal";
  59.    cadena[2]='b';
  60.    encolar(&cola,cadena);
  61. }
  62. int main(void)
  63. {
  64.  
  65.    char *cad;
  66.    crear(&cola);
  67.    cliente(3);// la cola es una variable global
  68.    desencolar(&cola,&cad);
  69.    printf("%s\n",cad);
  70. }
Bueno pos la salida de main me devuelve por un lado
"en desencolar hoba que tal" ( esto es el primer string que uso como banderita)
aqui una cadena de "basura". como si no modificara el valor de la cadena, mi problema es que no se como devolver la cadena de caracteres en el procedimiento desencolar. No se pasarlo bien por referencia... Alguien me ayuda?¿



« Última modificación: 21 Octubre 2010, 01:23 am por ¤¤¤K@NuTöM@N¤¤¤ » En línea

K@NuT0
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[?] Fallo de segmentación - C
Programación C/C++
8789poli 3 4,642 Último mensaje 14 Diciembre 2010, 19:50 pm
por 8789poli
Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
GNU/Linux
Garfield07 2 3,322 Último mensaje 1 Enero 2011, 01:03 am
por Garfield07
Fallo de segmentación al agregar mas nodos en una lista.
Programación C/C++
samur88 0 3,101 Último mensaje 19 Enero 2011, 15:08 pm
por samur88
Fallo de segmentacion con fgets y Array de cadenas. « 1 2 »
Programación C/C++
samur88 12 7,042 Último mensaje 7 Marzo 2011, 00:37 am
por samur88
Fallo de segmentacion
Programación C/C++
_niu 9 5,449 Último mensaje 29 Agosto 2011, 02:58 am
por _niu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines