Título: Detectar linea en blanco en C Publicado por: Dani001 en 5 Marzo 2017, 16:57 pm Hola, Que funcion en C o de que manera puedo tetectar un espacio en blanco?
Por ejemplo, esta seria mi entrada que le mando desde la linea de comandos: programa < entrada.in AABCATFS TTRTACAS TRESSSAA ASRTSOOA Deberia leer solo las dos primeras y al detectar la linea en blanco cambiar a otra matriz para almacenar las otras dos restantes. Gracias. Título: Re: Detectar linea en blanco en C Publicado por: MAFUS en 5 Marzo 2017, 17:15 pm Busca una línea que únicamente contenga '\n'
Título: Re: Detectar linea en blanco en C Publicado por: Dani001 en 5 Marzo 2017, 17:30 pm Comprendo lo de '\n' pero de que manera la puedo buscar? estoy inciando en esto.
Gracias Título: Re: Detectar linea en blanco en C Publicado por: MAFUS en 5 Marzo 2017, 20:15 pm Vale, entiendo. Algo que te va a gustar poco: C es un lenguaje de nivel medio y a diferencia de Java, C#, PHP, etc. debes aprender más de como funcionan los ordenadores por dentro, solo entonces sacarás todo el partido al lenguaje. Debes pensar que C fue creado para escribir el sistema operativo UNIX y eso es trabajar con el hardware.
Dicho esto cuando en la línea de comandos haces COMANDO < ARCHIVO lo que haces es ejecutar el comando o programa y pasar el contenido del archivo al buffer de entrada estándar del comando. Desde tu punto de vista es como si alguien, una vez ejecutado el programa, hubiera escrito todo el contenido del archivo desde el teclado y debieras sacarlo. En ce existe la función fgets que sirve para sacar una cadena de texto de un archivo, en tu caso el buffer de entrada (que es stdin). Un posible inicio: Código
Título: Re: Detectar linea en blanco en C Publicado por: integeroverflow en 5 Marzo 2017, 20:20 pm tambien podrias leer caracter por caracter desde el archivo con la funcion fgetc(), y ir metiendo los caracteres uno por uno en un buffer llevando un contador, hasta encontrar el caracter '\n'.
cuando encuentres \n asumis que termino una linea, entonces copias el contenido del buffer (la linea) a donde la tengas que copiar, limpias el buffer, reinicias el contador y seguis leyendo caracteres. el truco esta en que si encontrase el caracter \n, y el contador esta en 0 (es el primer caracter de la linea) asumis que la linea esta vacia y reinicias el buffer y el contador sin copiar nada, para seguir leyendo caracteres y repitiendo el proceso hasta EOF. Título: Re: Detectar linea en blanco en C Publicado por: Dani001 en 5 Marzo 2017, 21:43 pm Excelente! Gracias por su ayuda ya quedo.
Título: Re: Detectar linea en blanco en C Publicado por: Alberto n en 5 Marzo 2019, 03:09 am Hola, Que funcion en C o de que manera puedo tetectar un espacio en blanco? Por ejemplo, esta seria mi entrada que le mando desde la linea de comandos: programa < entrada.in AABCATFS TTRTACAS TRESSSAA ASRTSOOA Deberia leer solo las dos primeras y al detectar la linea en blanco cambiar a otra matriz para almacenar las otras dos restantes. Gracias. Como lo solucionaste, tengo un problema parecido... Título: Re: [PARTIR EN PARRAFOS UN TEXTO ] Detectar linea en blanco en C Publicado por: dijsktra en 7 Marzo 2019, 12:08 pm Como lo solucionaste, tengo un problema parecido... Todavia no lo ha resuelto. Lo que dice MAFUS respecto a la redireccion de la entrada estandar en shell/UNIX (tambien en COMMAND/Microsoft) es cierto, pero va a ser dificil si no elevas la abstracción, de "caracter \n" a "linea vacia". Para eso te ayuda la función Código: #include <stdio.h> Aquí va una propuesta, con una "durisima" formalización, de la que no estoy seguro al 100%. IMPORTANTE: Segun mi criterio, el ultimo parrafo acaba en EOF, no en EOL. Código Ahora comprobamos con el siguiente soneto en castellano del insigne Garcilaso de la Vega (quitando acentos y usando algunas formas del siglo XVI). Fichero poema.txt Código: bash-2.04$ cat poema.txt Veamos la salida en shell/UNIX. La primera linea marca el número de parrafos. Despues, por cada párrafo se da el número de orden , el total de líneas por parrafo, y cada línea enumerada dentro de su párrafo. Código: bash-2.04$ ./main < poema.txt Hmm... :-\ Demasiada formalidad para un poema tan humano. ;) ;) |