C: Leer cadena de texto hasta el ";"

B

Como puedo hacer una funcion que lea una linea de un archivo de texto hasta un ; y me lo almacene en una estructura. GRACIAAAS!!!!

ejemplo:

Nombre;Apellidos;Direccion;Telefono

cabron

Con strtok() y un bucle.

elkaoD

Otra forma mucho más hacky (Yo y mis manías) es un bucle que recorra uno a uno los elementos del array de la cadena (Con cadena) Cuando llega a un ; lo sustituye por '\0', imprime o hace lo que sea con "cadena" y cambia el puntero al caracter siguiente al '\0'.

Hacky que te cagas, pero si no vas a usar la cadena de nuevo (O se restaura) para mí es la mejor opción.

JuAn4k4

#3 Eso es un strtok hecho a mano.

sh0ty

#4 No es exactamente un strtok porque el strtok tiene mucho mas contenido que lo que propone #3. Aunque no le acabo de ver la finalidad a eso de poner un '/0' en vez del ';'.

elkaoD

#4, ya quisiera strtok :) Esto es un strtok a lo simple.

#5, por aquello de que C reconozca un fin de cadena.

B

vamos que con strtok puedo ir apuntando caracter a caracter en la estructura hasta el ; ¿y despues como pasaria de copiar de una variable de la estructura a otra?

7 días después
PirLo_21

strtok si me acuerdo bien ya ponia un '\0' al final de cada ' token'. Para copiar la cadena usa strcpy de 'string.h'

elkaoD

#8, pero es que yo no uso strtok...

spidy-

usando punteros seria asi

p=cadena;
p2=nombre;
p3=apellidos;
p4=direccion;
p5=telefono;

Nombre;Apellidos;Direccion;Telefono

while(*p!=';')
{
p2=p;
p++;

p2++;

}
p++;
while(*p!=';')
{
p3=p;
p++;

p3++;

}
p++;
while(*p!=';')
{
p4=p;
p++;

p4++;

}

si sabes c: entenderas la idea, aunque sea una manera algo fea, se puede solucionar asi, podrias crear una funcion asi no tienes que repetir todas la veces el bucle while.

GaN2

No se podría hacer por eventos??? En Visual Studio creo que podría hacerlo de esa manera, aunque si es una aplicación de consola ya no tengo ni idea xD

Gnos1s

Como dice #2, http://www.conclase.net/c/librerias/funcion.php?fun=strtok

Cambias s2 por los caracteres que tu quieras, en este caso ';'.

Las funciones de C están para algo, como por ejemplo, usarlas.

modena

Creas un bucle que vaya metiendo caracteres a un puntero hasta que encuentre un ';'

while(!EOF(ficherodetexto)){
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp vector2=getc();
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp i++;
}
i=0;
while(caracter!=';'){
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp vector=vector2;
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp i++;
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp }


Mas o menos esto seria la idea principal luego ya vas extendiendolo hasta lo que quieras realmente.

Espero que te haya sido de ayuda =)

Usuarios habituales