[C con Clase] Problema con Cadena de caracteres concepto1[]

Oscar pelucheloko en hotmail.com
Dom Sep 16 18:31:31 CEST 2012


Bueno, pues si, estoy en Windows 

No estoy trabajando con punteros en mi programa.
No declaré el tamaño por que imaginaba que al no definir tamaño podría rellenarlo con los caracteres que yo quisiese al y que él se cogiese los bytes que fuesen necesarios. De todas formas no quería declarar un array, si no una cadena.

Ya da igual, lo solucioné de otra manera el problema (ver correo mandado a la lista de programilla con su código de fuente de control de gastos)

Básicamente tuve que darle un tamaño si, aunque no es lo que quería.

Un saludo.


From: Ezequiel Hernan Di Giorgi 
Sent: Sunday, September 16, 2012 2:40 PM
To: Lista de correo sobre C y C++ 
Subject: Re: [C con Clase] Problema con Cadena de caracteres concepto1[]

Mmmm... hay algo raro en todo esto. Estas declarando concepto[], que es un array de ¿CUANTOS elementos?  En linux con el CC te los toma como un array de un solo elemento. Pero se me hace que estas trabajando en windows. Y que te toma todos esos arrays que apuntan a un mismo puntero osea concepto1=concepto2=concepto3. De igual modo segun mi punto de vista, estarias guardando caracteres en espacio de memoria que no te pertenece. Windows te deja hacer ese tipo de cosas sin darte un hermoso segmentation fault, en algunos casos.  
Incluso windows te deja modificar las funciones si las tratatas como un array de chars... jejeje me voy de tema.

La solucion para mi seria

char concepto1[50];
char concepto2[50];
char concepto3[50];

yo puse 50, pero basicamente es el tamaño que quieras. Mira yo hice esto, en mi programita.
EN C, OSEA USANDO EL CC.
  #include <stdio.h>
  #include <stdlib.h>

  char string0[];
  char string1[];
  char string2[];

  int main ()
  {
  printf ("\n%p\n%p\n%p\n",string0,string1,string2);
  exit(EXIT_SUCCESS);
  }

al compilar me dio

  $ cc main.c
  main.c:4:6: warning: array ‘string0’ assumed to have one element [enabled by default]
  main.c:5:6: warning: array ‘string1’ assumed to have one element [enabled by default]
  main.c:6:6: warning: array ‘string2’ assumed to have one element [enabled by default]
  ezequiel en ghost:~/projects$ ./a.out

  0x601039
  0x601038
  0x60103a
  ezequiel en ghost:~/projects$ 

mientras que en C++ no compila osea usando el g++

  $ g++ main.c
  main.c:4:14: error: storage size of ‘string0’ isn’t known
  main.c:5:14: error: storage size of ‘string1’ isn’t known
  main.c:6:14: error: storage size of ‘string2’ isn’t known

---------
Cuando alguien hace char  cosa[]="HOLA MUNDO"; el compilador tan inteligente se fija el tamaño que debe tener el array para contenerlo. 


(:


--------------------------------------------------------------------------------
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120916/abf9cd4b/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: wlEmoticon-smile[1].png
Type: image/png
Size: 1041 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120916/abf9cd4b/attachment.png>


Más información sobre la lista de distribución Cconclase