lectura de una cadena
hola! queria saber si alguien me aclaraba una duda porque estoy ya loco y no consigo sacar como es. Mi problema es el siguiente, yo leo una cadena de caracteres de un archivo previamente abierto, lo hago con la funcion fscanf(archivo,"%s",var), pero cada vez que lee en la variable aparece la cadena hasta el primer espacio que se halla encontrado en el archivo, por ejemplo si el archivo contiene "hola, me gusta C" en la variable var="hola," y claro no necesito la coma para nada; por eso queria preguntarle a alguien como modifico la funcion fscanf() para que no me lea la coma, o que solo lea una cadena alfanumerica, es decir que ignore todos los signos de puntuacion. He leido en un manual que para el caso particular de la coma y leyendo dos variables de tipo cadena, seria asi, pero lo pruebo y no hay manera:
fscanf(archivo,"%s,s",var1,var2).
Gracias por la atencion, un saludo.
fscanf(archivo,"%s,s",var1,var2).
Gracias por la atencion, un saludo.
Hola MAKI, y todos; soy Alejandro, aunque no sé si ya hay otro ALejandro por aquí, en ese caso, no tendría ningún inconveniente en pasar a ser Alejandro 2.0. Bueno, al asunto:
Para descartar una coma en particular, que sería tomada como tterminador de la lectura, el especificador de formato es:
[^,] --> el signo ^ indica que será válido cualquier carácter menos los que le sigan. Si se quisieran descartar otros más, podría ponerse: [^,.;:], por ejemplo.
Entonces, para no incluir la coma:
fscanf(archivo, "%[^,]", var);
Ahora, en lugar de decirle a scafnf cuáles caracteres no aceptar, también podemos decirle cuáles sí:
Por ejemlo, con
[A-Za-z] va a tomar exclusivamente letras mayúsculas y minúsculas.
Bueno, espero que te sirva, y no dejes de mirar en la ayuda de tu compilador algo más sobre estos formatos, que algunos también soportan macros predefinidas, que pueden ser útiles.
Saludos, y suerte,
Alejandro
Para descartar una coma en particular, que sería tomada como tterminador de la lectura, el especificador de formato es:
[^,] --> el signo ^ indica que será válido cualquier carácter menos los que le sigan. Si se quisieran descartar otros más, podría ponerse: [^,.;:], por ejemplo.
Entonces, para no incluir la coma:
fscanf(archivo, "%[^,]", var);
Ahora, en lugar de decirle a scafnf cuáles caracteres no aceptar, también podemos decirle cuáles sí:
Por ejemlo, con
[A-Za-z] va a tomar exclusivamente letras mayúsculas y minúsculas.
Bueno, espero que te sirva, y no dejes de mirar en la ayuda de tu compilador algo más sobre estos formatos, que algunos también soportan macros predefinidas, que pueden ser útiles.
Saludos, y suerte,
Alejandro
