Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AXA en 25 Octubre 2021, 16:05 pm



Título: se me confunde las cadenas string
Publicado por: AXA en 25 Octubre 2021, 16:05 pm
ET IDOL.
tu ejemplo lo entendi. pero como no entiendo esto...
char *s[20]="hola";
printf(*s);

yo lo usaba asi. pero con strncopy como imprimo un char data[20]?


Título: Re: se me confunde las cadenas string
Publicado por: Eternal Idol en 25 Octubre 2021, 16:13 pm
Primero no abras nuevos hilos para preguntar sobre el mismo tema por favor.

Eso son 20 punteros a cadena, el primer elemento del array (s[0] o *s) apunta a la primera que tiene asignado la cadena "hola".


Código
  1. char *s[20]= {"hola", "chau" };
  2. printf("%s = %s\r\n%s = %s", *s, s[0], *(s+1), s[1]);

¿Como imprimir un array de caracteres? No tiene ningun misterio, en realidad es exactamente igual a como lo estabas haciendo.

Código
  1. char data[20] = "hola";
  2. printf(data);
  3. printf("\r\n%s\r\n", data);


Título: Re: se me confunde las cadenas string
Publicado por: AXA en 25 Octubre 2021, 16:16 pm
si me precipite. entendi. ahora me funca. vos sos español?


Título: Re: se me confunde las cadenas string
Publicado por: Eternal Idol en 25 Octubre 2021, 16:26 pm
No; tengo una cita del General en la firma.


Título: Re: se me confunde las cadenas string
Publicado por: .xAk. en 20 Noviembre 2021, 04:48 am
19 tienes que contar el fin el \0 es obligado al final de la cadena.


Título: Re: se me confunde las cadenas string
Publicado por: Eternal Idol en 20 Noviembre 2021, 08:05 am
19 tienes que contar el fin el \0 es obligado al final de la cadena.

Son 20 punteros a cadena, si tu respuesta fuera correcta esto imprimiria 20 en pantalla:
Código
  1. char *s[20]= {"hola", "chau" };
  2. printf("%d\r\n", sizeof(s));

¿No lo hace verdad? Lo que imprime es 20 * tamaño de puntero, 160 en x64 por ejemplo.


Título: Re: se me confunde las cadenas string
Publicado por: .xAk. en 20 Noviembre 2021, 09:35 am
c|a|d|e|n|a|\0

¿no saben de que va?

https://www.uco.es/grupos/eatco/informatica/metodologia/cadenasyarrays.pdf


Título: Re: se me confunde las cadenas string
Publicado por: Eternal Idol en 20 Noviembre 2021, 09:57 am
c|a|d|e|n|a|\0

¿no saben de que va?

¿Que parte no entendes de que es un array de punteros a cadena? ¿Ves el *? Tal vez asi lo entiendas mejor:
char *s[20];



Un puntero a cadena:
char *s;
20 punteros a cadena:
char *s[20];

Una cadena de 20 caracteres (incluyendo el cero terminador o caracter nulo, si, obviamente):
char s[20];



Y si, alguna idea al respecto tengo:

PD. YST: te falto un reservar un byte para el cero terminador de cadena.

https://foro.elhacker.net/buscador2-t259688.0.html;msg1262234#msg1262234


Título: Re: se me confunde las cadenas string
Publicado por: .xAk. en 20 Noviembre 2021, 10:26 am
Así se entiende muy bien.