Me parece que es asi
int main ()
{
char *s[] = {"holas", " " , "mundo"};
//s[0][4] = 0; /* Esta linea pone el \0 en lugar de la s de holas */
*(s[0] + 4) = 0;
printf("%s%s%s",s[0], s[1], s[2]); /* Debería imprimir hola mundo */
return 0;
}
Fijate si la direccion a la cual estas accediendo con s[0][4] esta contenida
dentro de los strings apuntados por *s[]
Saludos
Jerónimo
Message: 1
Date: Thu, 21 Feb 2008 22:55:48 -0200
From: "Tito" <[EMAIL PROTECTED]>
Subject: Re: [Prog] char *s[]
To: Una lista para consultas de programación
<[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Agrego una cosa por las dudas. Una cadena asignada con "" ya tiene el \0
cargado al final. No es así?
Corrijanme si me equivoco.
Lo aclaro por si querías modificar la cadena por esa razón exactamente.
Saludos
Tito
----- Original Message -----
From: Fernando Requena
To: Una lista para consultas de programación
Sent: Thursday, February 21, 2008 11:00 AM
Subject: Re: [Prog] char *s[]
donde dice data segment, no debería decir code segment?
saludos, Fernando
2008/2/21 Gonzalo Merayo <[EMAIL PROTECTED]>:
Javier,
Los strings que pongas entre "" estan en el data segment y son
inmodificables.
2008/2/21 Javier Persico <[EMAIL PROTECTED]>:
> Buenas Gente!.
>
> Tengo el siguiente código:
>
> 1 int main ()
> 2 {
> 3 char *s[] = {"holas", " " , "mundo"};
> 4 s[0][4] = 0; /* Esta linea pone el \0 en lugar de la s de holas */
> 5 printf("%s%s%s",s[0], s[1], s[2]); /* Debería imprimir hola mundo */
> 6 return 0;
> 7 }
>
> Esto compila correctamente pero da un error en tiempo de ejecución en la
> línea 4.
> No permite modificar.
> ¿Porque me está dando este error?
> ¿Como se pueden modificar las cadenas?.
>
> Saludos!
>
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion