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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda] programacion en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] programacion en c  (Leído 2,972 veces)
gonpiar

Desconectado Desconectado

Mensajes: 1


Ver Perfil
[Duda] programacion en c
« en: 4 Marzo 2012, 20:02 pm »

Buenas  :D , me gustaria preguntar a cualquiera que pueda resolverme esta dudilla:

Tengo la función: void funcion (char** cadena1, int pos, char *caracter)

Se indica que se debe extraer el caracter que hay en la posicion pos de la cadena char** cadena1 e insertarlo en la cadena char* caracter.

Si en lugar
de char** cadena1 y char*caracter tuviésemos char* cadena1 y char caracter, lo único que habría que hacer sería: caracter=cadena[pos];

Pero al haber doble puntero, la manera de acceder a la posicion indicada es con:
caracter=cadena+pos, pero eso me copia desde la posicion pos en adelante.

¿Cómo puedo hacer para indicar mediante un puntero una posición determinada?

Muchas gracias  :silbar: !!


En línea

armizh

Desconectado Desconectado

Mensajes: 187

His brain caught in a hole...


Ver Perfil WWW
Re: [Duda] programacion en c
« Respuesta #1 en: 4 Marzo 2012, 21:31 pm »

Puedes usar strncpy, que copia el contenido de una cadena a otra pero dandole una longitud maxima de... lo que tu quieras. Por ejemplo, tienes char *cadena1, que posee 7 caracteres (p.ej. "familia") y lo pasas a **cadena2 en la posicion pos, haces esto:
Código
  1. strncpy(cadena2[pos], cadena1, 7);

Pero esto te restringe a 7 caracteres. Por lo que si tienes a *cadena1, de longitud variable, tienes que hacer:
Código
  1. strncpy(cadena2[pos], cadena1, strlen(cadena1));

Estas funciones estan en la libreria string.h, al igual que strcpy, strcmp, etc etc.

Saludos


« Última modificación: 4 Marzo 2012, 22:39 pm por armizh » En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
  1. git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
  1. git clone https://github.com/armizh/Hamster
Caballo_Alado

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: [Duda] programacion en c
« Respuesta #2 en: 4 Marzo 2012, 21:55 pm »

Pero a lo mejor precisas hacer el trabajo con solo apuntadores y quizá no llegaste a strncpy, yo creo que el problema esta redactado de forma media confusa :silbar:, a lo mejor si lo que querés es copiar las cadenas como lo hizo armizh, lo mejor es copiar con un bucle for y con arreglos de apuntadores.

para informarte más sobre apuntadores encontré esta pagina que a lo mejor te sirve para entender más sobre el tema:

http://www.fismat.umich.mx/mn1/manual/node11.html

y según tengo entendido no se hacen tareas pero ta ya fue  :rolleyes:
En línea

♫           ♪ "I'm sexy and I know it"     ♪      ♫
armizh

Desconectado Desconectado

Mensajes: 187

His brain caught in a hole...


Ver Perfil WWW
Re: [Duda] programacion en c
« Respuesta #3 en: 4 Marzo 2012, 22:43 pm »

Pero a lo mejor precisas hacer el trabajo con solo apuntadores y quizá no llegaste a strncpy, yo creo que el problema esta redactado de forma media confusa :silbar:, a lo mejor si lo que querés es copiar las cadenas como lo hizo armizh, lo mejor es copiar con un bucle for y con arreglos de apuntadores.
Pero para que hacer un bucle for manejando los punteros si la funcion strncpy ya hace el bucle por nosotros?

Saludos
En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
  1. git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
  1. git clone https://github.com/armizh/Hamster
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Duda] programacion en c
« Respuesta #4 en: 4 Marzo 2012, 23:37 pm »

Buenas  :D , me gustaria preguntar a cualquiera que pueda resolverme esta dudilla:

Tengo la función: void funcion (char** cadena1, int pos, char *caracter)

Se indica que se debe extraer el caracter que hay en la posicion pos de la cadena char** cadena1 e insertarlo en la cadena char* caracter.
Bien el enunciado esta mal o tal vez ocurrió un error al copiarlo.

Tal como esta "cadena1" no es una cadena en el sentido de ser la dirección en memoria donde se almacena una cadena.

En su lugar es la dirección en memoria de un objeto de tipo "char *". Para explicarlo mejor siguiendo el enunciado ese fragmento seria valido extendiéndolo mas o menos así:
Código
  1. char *cad;
  2. char *tmp;
  3.  
  4. cad = malloc(123); /* Solo por decir algo */
  5. tmp = malloc(123); /* Solo por decir algo */
  6.  
  7. strcpy(cad, "hola");
  8.  
  9. /* ... */
  10.  
  11. funcion(&cad, 3, tmp);
Con ello la intención sera copiar (de alguna forma) el carácter 'a' en la cadena indicada por el puntero "tmp".

Pero de nuevo no tiene sentido pasar un "char **" para esa operación a menos (como ya comente) que falte algo.

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda programación
Programación General
Franki 5 4,236 Último mensaje 15 Mayo 2010, 11:34 am
por Kase
Duda de programacion
Dudas Generales
Dimitrixs 2 2,925 Último mensaje 8 Agosto 2011, 23:52 pm
por sepan
duda de programacion web
Desarrollo Web
nprio 3 2,514 Último mensaje 29 Abril 2012, 03:09 am
por engel lex
DUDA-Programación en C
Programación C/C++
mariota1 4 2,444 Último mensaje 21 Octubre 2012, 03:03 am
por rir3760
Duda en programacion en c
Programación C/C++
Razoritoback 1 1,645 Último mensaje 13 Enero 2013, 14:33 pm
por 0xDani
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines