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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Conversion de String Constante a Char*
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Conversion de String Constante a Char*  (Leído 2,936 veces)
jonniemaxxx

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Conversion de String Constante a Char*
« en: 24 Mayo 2014, 03:52 am »

Hola, ando haciendo un programa para mis clases de Programacion basica, lo he terminado pero no entiendo porque me bota un warning en esta funcion

Código
  1. char* Item_Name(int Item){
  2.    char* ItemName[10];
  3.    ItemName[0] = "Producto 1";
  4.    ItemName[1] = "Producto 2";
  5.    ItemName[2] = "Producto 3";
  6.    ItemName[3] = "Producto 4";
  7.    ItemName[4] = "Producto 5";
  8.    ItemName[5] = "Producto 6";
  9.    ItemName[6] = "Producto 7";
  10.    ItemName[7] = "Producto 8";
  11.    ItemName[8] = "Producto 9";
  12.    ItemName[9] = "Producto 10";
  13.    //Retorna el Nombre del Producto Item
  14.    return ItemName[Item-1];
  15. };

Les agradeceria su Colaboracion aunque el programa funcione quiero quitarle ese warning :3 utilizo Code Blocks


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Conversion de String Constante a Char*
« Respuesta #1 en: 24 Mayo 2014, 04:05 am »

Hola, ando haciendo un programa para mis clases de Programacion basica, lo he terminado pero no entiendo porque me bota un warning en esta funcion

Código
  1. char* Item_Name(int Item){
  2.    char* ItemName[10];
  3.    ItemName[0] = "Producto 1";
  4.    ItemName[1] = "Producto 2";
  5.    ItemName[2] = "Producto 3";
  6.    ItemName[3] = "Producto 4";
  7.    ItemName[4] = "Producto 5";
  8.    ItemName[5] = "Producto 6";
  9.    ItemName[6] = "Producto 7";
  10.    ItemName[7] = "Producto 8";
  11.    ItemName[8] = "Producto 9";
  12.    ItemName[9] = "Producto 10";
  13.    //Retorna el Nombre del Producto Item
  14.    return ItemName[Item-1];
  15. };

Les agradeceria su Colaboracion aunque el programa funcione quiero quitarle ese warning :3 utilizo Code Blocks
¿En que linea exactamente? En la asinación de los punteros? o en el retorno?
de todas maneras simplemente hacer un casting o hacer la declaracion de la variable como constante aunque esa manera de obtener el puntero
no me gusta porqué no crear un array de punteros global?


En línea

jonniemaxxx

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Conversion de String Constante a Char*
« Respuesta #2 en: 24 Mayo 2014, 04:27 am »

o sea de la linea 3 a la linea 12 hahaha como lo harias tu ? ando algo perdido y si en la asignacion
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Conversion de String Constante a Char*
« Respuesta #3 en: 24 Mayo 2014, 05:06 am »

o sea de la linea 3 a la linea 12 hahaha como lo harias tu ? ando algo perdido y si en la asignacion
Simplemente crear el array:
Código:
const char* ItemName[] = {
"Producto 1",
"Producto 2",
"Producto 3",
"Producto 4",
"Producto 5",
"Producto 6",
"Producto 7",
"Producto 8",
"Producto 9",
"Producto 10"
};

char* Item_Name(int Item){
   // validate it
   if(Item <= sizeof(ItemName) / sizeof(ItemName[0]))
   {
    return ItemName[Item-1];
   }
   return NULL;
};
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Conversion de String Constante a Char*
« Respuesta #4 en: 24 Mayo 2014, 16:08 pm »

no entiendo porque me bota un warning en esta funcion
Código
  1. char* Item_Name(int Item)
  2. {
  3.    char* ItemName[10];
  4.  
  5.    ItemName[0] = "Producto 1";
  6.    ItemName[1] = "Producto 2";
  7.  
  8.    // ...
  9.  
  10.    return ItemName[Item-1];
  11. };
Se presenta el mensaje de advertencia porque en C++ una cadena literal como "Producto 1" es de tipo "const char [N]" y este, en las asignaciones y sentencia de retorno, genera un valor de tipo "const char *". El problema es que los tipos no coinciden ya que tanto la función como los elementos del array los declaras de tipo "char *" (sin el calificador const).

Una solución ya la indico x64Core, otra opción es simplemente utilizar el tipo correcto:
Código
  1. const char *Item_Name(int Item)
  2. {
  3. const char *ItemName[10];
  4.  
  5. ItemName[0] = "Producto 1";
  6. ItemName[1] = "Producto 2";
  7.  
  8. // ...
  9.  
  10. return ItemName[Item - 1];
  11. }

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
jonniemaxxx

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Conversion de String Constante a Char*
« Respuesta #5 en: 24 Mayo 2014, 20:19 pm »

Oye muchas gracias ahora si :D esa respuesta es mas acorde con mi nivel actual de conocimiento :D jaja
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Char[] != String « 1 2 »
Programación General
Hendrix 19 10,804 Último mensaje 22 Agosto 2011, 03:54 am
por someRandomCode
Problema conversión Unsigned char a char
Programación C/C++
juliodiez 4 2,877 Último mensaje 19 Enero 2013, 04:34 am
por juliodiez
[C] Error Conversión String to Char
Programación C/C++
MeCraniDOS 3 3,494 Último mensaje 31 Marzo 2013, 18:31 pm
por avesudra
Notice: Array to string conversion in ... T_T
PHP
JJMD 6 6,872 Último mensaje 9 Julio 2013, 23:57 pm
por JJMD
Problema con string, char, etc
Programación C/C++
GenR_18 2 1,967 Último mensaje 21 Septiembre 2013, 19:30 pm
por GenR_18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines