Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Talard en 19 Febrero 2012, 16:51 pm



Título: ¿Variable mayor a char?
Publicado por: Talard en 19 Febrero 2012, 16:51 pm
Buenas, os explico.

Necesito guardar un número de 1000 cifras en un char, o alguna variable parecida que sea capaz de almacenar más datos, de manera que pueda acceder a todas las "posiciones" del mismo.

Para que veáis a lo que me refiero:

Código
  1. char numero[1000] = "73167176531330624919225119674426574742355349194...";

Me tira el error: "error: initializer-string for array of chars is too long."

(Utilizo Geany en Ubuntu de IDE, y C++ de lenguaje).

El caso es que necesitaría acceder a cada una de las cifras e ir multiplicando de 5 en 5, subiendo el "origen" de la multiplicación uno, y comparando resultados.

Para que me entendáis, por ejemplo, la primera multiplicación sería 7*3*1*6*7, la segunda 3*1*6*7*1, y así...

¿Alguna idea?

Gracias a todos  :D


Título: Re: ¿Variable mayor a char?
Publicado por: rir3760 en 19 Febrero 2012, 17:01 pm
El mensaje de error se debe a que indicas una longitud (1000) pero la cadena literal consta de un numero mayor de caracteres (debes considerar el '\0' al final de esta).

Se debe solucionar si eliminas el numero de elementos.

Un saludo


Título: Re: ¿Variable mayor a char?
Publicado por: Talard en 19 Febrero 2012, 17:04 pm
Perfecto, muchas gracias tío ^^

(Lo que hice fue añadir 1, teniendo en cuenta el \0) :3


Título: Re: ¿Variable mayor a char?
Publicado por: Caster en 19 Febrero 2012, 17:33 pm
El tema está solucionado pero añado una cosa:

Es mejor quitar el número en los corchetes porque nunca te equivocarás al contar los caracter y despues para acceder a cada cifra lo que haces es escribir la posición de dicha cifra entre los corcehetes.

Saludos


Título: Re: ¿Variable mayor a char?
Publicado por: Talard en 19 Febrero 2012, 17:42 pm
Entiendo, osea, al dejar
Código
  1. numero[] = "...";
No hay limite de caracteres, no?


Título: Re: ¿Variable mayor a char?
Publicado por: Caster en 19 Febrero 2012, 17:47 pm
Que yo sepa no.


Título: Re: ¿Variable mayor a char?
Publicado por: rir3760 en 19 Febrero 2012, 18:02 pm
Buena pregunta.

Según el estándar de C (ISO C99) un compilador debe aceptar, como mínimo, cadenas literales de hasta 4,095 caracteres.

Según el viejo estándar de C++ (C++98) no hay limites sino recomendaciones, en su Anexo B (que solo es informativo) se sugiere un limite 65,536 caracteres para una cadena literal.

Lo mejor en un escenario como este es revisar la documentación del compilador.

Un saludo