C/Visual C - ayuda!! (vector de cadenas)

 
Vista:

ayuda!! (vector de cadenas)

Publicado por Oskii (1 intervención) el 18/04/2010 11:44:08
Hola!, mi problema es el siguiente:
Debo guardar la primera palabra (etiqueta) de cada linea de un archivo en un vector de cadena, por lo que uso el strtok para cortar la linea (leida con fgets) y me quedo con la primera palabra. Hasta ahí todo bien, pero cuando voy a almacenarla en el vector, solo me guarda la última etiqueta recogida, por lo que al mostrar el vector muestra tantas palabras como debe pero siempre es la última.
Gracias de antemano por su tiempo y ayuda.

[color=green]int[/color] main()
{
[color=green]FILE [/color]*Fich;
[color=green] char[/color] Cadena[100];
[color=green]char[/color] *Etiqueta;
[color=green] char[/color] *VecEti[20];
[color=green]char[/color] c, Eti2[20];
[color=green] int[/color] ValorMem = 0;

Fich = fopen([color=red]"fich.txt", "r"[/color]);
[color=blue]//Si el fichero abre correctamente, comenzamos[/color]
if(Fich==[color=red]NULL[/color]) {
printf([color=red]"Error: No se puede abrir el fichero.\n"[/color]);
return 1;
}
else {
printf([color=red]"Fichero abierto correctamente.\n\n[/color]");
[color=blue]//Vamos cogiendo lineas enteras mientras hayan en el fichero[/color]
while(fgets(Cadena,100,Fich) != NULL){
c = Cadena[0];
[color=blue] //observamos el primer caracter de la linea a ver si es un comentario, un espacio o una etiqueta[/color]
if((c == [color=red]' '[/color]) || (c ==[color=red] ';'[/color])){
if(c == [color=red]' '[/color]){ [color=blue]//si encontramos un nemonico se aumenta el contador de memoria pero no se guarda en el vestor de etiquetas, se senala como un caracter basura[/color]
VecEti[ValorMem]= [color=red]"$"[/color];
ValorMem++;

}
}
else{
Etiqueta = strtok(Cadena, [color=red]" "[/color]);
strcpy(Eti2, Etiqueta);
VecEti[ValorMem] = Eti2; [color=blue]//La posicion en el vector correspondera al valor en memoria de la etiqueta[/color]
[color=blue] //printf("%s\n", Eti2);[/color] [b][color=orange]EN ETI2 SI SE GUARDAN BIE[/color]N[/b]
Etiqueta = [color=red]" "[/color]; /[color=blue]/"Limpiamos" la variable para que no se solapen las etiquetas[/color]
ValorMem++;
}
}
printf("%s ", VecEti[0]); [color=orange][b]EN TODAS LAS POSICIONES SIEMPRE MUESTRA LO MISMO, EL ULTIMO VALOR[/color][/b]
printf("%s ", VecEti[1]);
printf("%s ", VecEti[2]);
printf("%s ", VecEti[3]);
}

fclose(Fich);
//getchar();
return 0;
}
[color=darkred][/color][color=green][/color][color=green][/color][size=18][/size][b][/b]
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