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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 218


¡El conocimiento es de todos!


Ver Perfil
return array char en C
« en: 29 Septiembre 2015, 02:58 am »

Buenas a todos!

Tengo problemas para declarar una funcion que retorna un array de caracters.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. const int maxCharPalab=100;
  6. typedef char palabra[maxCharPalab];
  7.  
  8. const int maxCharInstruc=1000;
  9. typedef char instruccion[maxCharInstruc];
  10.  
  11. palabra leePalabras(instruccion instruc){
  12.  
  13.     palabra palab;
  14.  
  15.    //codigo...
  16.  
  17.    retrurn palab;
  18.  
  19. }
  20.  
  21.  

¿como debo declarar la funcion para que funcione correctamente con arrays?


Gracias, un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: return array char en C
« Respuesta #1 en: 29 Septiembre 2015, 04:01 am »

No se puede. Lo que si puedes hacer es una función que retorne un puntero a un arreglo de caracteres.

Código
  1.  
  2. char* Funcion(){
  3.    char arreglo[100];
  4.  
  5.    return arreglo;
  6. }
  7.  
  8.  

Para tratar los caracteres del arreglo al que apunta el puntero tienes que cachar el puntero con otro puntero en la función que llame a la función que retorna el puntero.

Código
  1. main(){
  2.   char* palabra = Funcion();
  3.   palabra[0]; //primer caracter del arreglo apuntado
  4.   palabra[1]; //segundo caracter y asi
  5. }
  6.  

Como el arreglo es de 100 caracteres entonces tienes que agregar un caracter nulo en donde creas que termina la palabra guardada por el arreglo. esto es para que no tomes valores basura.

Código
  1.   char palabra[5] =  {'h','o','l','a','\0'};
  2.  
  3.   for( ;*palabra;palabra++)  //recorre el  arreglo hasta encontrar un caracter nulo
  4.        printf("%c",*palabra); //imprime los caracteres del arreglo
  5.  
  6.    printf("%s",palabra); //también se puede asi.
  7.  

El ejemplo era para un arreglo de 5 elementos, el chiste es agregar un caracter nulo('\0') al final de la palabra



« Última modificación: 29 Septiembre 2015, 04:05 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: return array char en C
« Respuesta #2 en: 29 Septiembre 2015, 05:23 am »

Concuerdo con lo que dice 0xFer, pero deberías trabajar con la memoria dinámica, osea deberías definir un puntero e inicializarlo con malloc().

El ejemplo que dio 0xFer , seguramente funcionara, pero solo con ese código, ya que el puntero se guardo en el tope de la pila al llamar la función, cuando la función termine, el tope va hacer otro y el puntero va hacer solo basura.

El uso de la memoria dinámica en C es esencial, te recomiendo que estudies muy bien como funciona esta memoria y las funciones , malloc(), realloc(), y free().

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error al definir array char en DEV-CPP
Programación C/C++
DA KILLER 6 3,879 Último mensaje 27 Febrero 2012, 13:39 pm
por satu
Funcion que retorne char array? « 1 2 »
Programación C/C++
juancaa 13 17,451 Último mensaje 19 Julio 2012, 16:23 pm
por rir3760
substring en array char « 1 2 »
Programación C/C++
soyloqbuskas 13 7,058 Último mensaje 22 Septiembre 2012, 00:33 am
por rir3760
No puedo asignar un char a un array de dos dimensiones
Programación C/C++
SCUMM 5 2,989 Último mensaje 12 Febrero 2014, 16:24 pm
por eferion
ayuda array char
Programación C/C++
LAULAU12 7 3,736 Último mensaje 25 Enero 2015, 00:13 am
por LAULAU12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines