C/Visual C - Recorrer tablas de cadenas @.@

 
Vista:

Recorrer tablas de cadenas @.@

Publicado por Rubén (5 intervenciones) el 01/06/2003 11:33:02
Estoy rellenando unas tablas de cadenas y me hace algo raro.
el código es este:

for (x=0;x<=24;x++)
strcpy(Nifs[x], ")))))))))");

Donde Nifs es una tabla del tipo cadena que he definido mediante un:
typedef char cadena[9];

en vez de ir asignado la cadena ")))))))))" a cada posición de la tabla Nifs, va concatenando la cadena a las respectivas posiciones una y otra vez., Es decir:
Nifs[0] == ")))))))))" en el primer paso por el bucle
NIfs[0] == "))))))))))))))))))" en el segundo
y así sucesivamente y con las posiciones siguientes...

Nifs[0] == ")))))))))" en el primer paso por el bucle
NIfs[1] == sin definir
NIfs[2] == sin definir

NIfs[0] == "))))))))))))))))))" en el segundo
Nifs[1] == ")))))))))"
Nifs[2] == sin definir

Nifs[0] == ")))))))))))))))))))))))))))" en el tercero
Nifs[1] == "))))))))))))))))))"
Nifs[2] == ")))))))))"

Quiero rellenar asi estas tablas para el algoritmo de busqueda dicotomica + insercion directa, ya que si la tabla no está llena no lo hace bien. Pero porque me hace esto este ''for'? y si se supone que la tabla es de cadena (el tipo definido que es de un máximo de 9 caracteres) por qué acepta más de 9 cuando hace la concatenación?? >_< si me podeis hechar una mano por favor, (uso Borland C3.1, por si os da alguna referencia)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recorrer tablas de cadenas @.@

Publicado por abi (54 intervenciones) el 02/06/2003 01:08:10
Hola! No entendi muy bien tu problema, pero si lo que quieres es tener 9 cadenas diferentes de tamaño de 9 caracteres, debes declarar un arreglo bidimensional de cadenas, porque asi lo que estas haciendo es declarar una variable del tipo cadena de longitud 9, entonces en el for lo que estas haciendo es que a la posicion 0 ce la cadena (el inicio de la cadena), le estas copiando todos los parentesis, y luego cuando sigue el ciclo a la posicion 1 de la cadena le vuelves a copiar los parentesis pero ahora desde la posición 1.
Si la función acepta más de 9 caracteres y no toma en cuenta el tamaño de la cadena, creo que es porque el compilador no reconoce de cuanto es el tamaño del arreglo que declaras y no verifica si se pasa o no de la longitud, eso lo tienes que hacer tú, bueno creo que es algo así, y con un arreglo de enteros también puedes hacer lo mismo escribir en una posición más grande que la que declaraste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorrer tablas de cadenas @.@

Publicado por chuidiang (677 intervenciones) el 02/06/2003 06:38:32
Veo una cosa rara. Si quieres hueco para 9 caracteres, debes reservar 10. El \0 del final de las cadenas también ocupa. Haz que el typedef de char sea de 10.
Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar