¿Variable mayor a char?

Iniciado por Talard, 19 Febrero 2012, 16:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Talard

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 (cpp) [Seleccionar]
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

rir3760

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
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

Talard

#2
Perfecto, muchas gracias tío ^^

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

Caster

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

Talard

Entiendo, osea, al dejar
Código (cpp) [Seleccionar]
numero[] = "...";
No hay limite de caracteres, no?

Caster


rir3760

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
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