Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/04/2012, 19:16
tyrax
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 11 años, 11 meses
Puntos: 0
Problema con manejo de arreglos de caracteres en C

Buenas. Soy nuevo en este foro.

Mi problema es el siguiente: tengo un arreglo de caracteres que contiene cierta informacion que necesito. Quiero guardar cada "token" en una variable independiente, es decir, si mi arreglo contiene "rojo 100020201 A bebe", necesitaria guardar "rojo" en una variable, "100020201" en otra variable, y asi sucesivamente. No se nada sobre el manejo de arreglos de caracteres en C, asi que de esta forma se me ocurrio hacerlo:

Código:
int main () {
char spa, linea1[50], var1[10], var2[20], var3[20], var4[10];
int cont1, cont2;
	FILE *arch;
	arch = fopen("archivo.txt", "r");
	if (arch == NULL) {
		printf("Hay un error con ell archivo.");
	} else {
		fgets (linea1 , 50 , arch);
		fclose (arch);
	} //Hasta este punto ya he almacenado el valor de la primera linea del archivo en un arreglo de caracteres.
	cont1 = 0;
	cont2 = 0;
	spa = " ";	
	while(cont1 <= 50){
		if(linea1[cont1] == spa) {  cont2 = cont2+1;  }
//Explico esta parte: el archivo tendra como maximo 4 tokens/palabras/eslabones adentro, midiendo la cantidad de espacios que he recorrido logro saber en que variable deberia estar concatenando.
		switch(cont2){
			case 0: strcat(var1,linea1[cont1]); break;
			case 1: strcat(var2,linea1[cont1]); break;
			case 2: strcat(var3,linea1[cont1]); break;
			case 3: strcat(var4,linea1[cont1]); break;
			default: break;
		}
		cont1 = cont1+1;
	}
	puts (var1);
	puts (var2);
	puts (var3);
	puts (var4);
return 0;
}
Esos ultimos puts los he colocado para saber que valor tienen almacenadas las variables, pero me da errores de compilacion y no funciona. Es importante aclarar que necesito trabajar en C, no en C++, por lo que no puedo utilizar el tipo de datos string.

Pueden darme alguna ayuda con esto?