Autor
|
Tema: Consulta fscanf leer nueva linea (Leído 4,656 veces)
|
casidus
Desconectado
Mensajes: 39
|
Buenos dias.
me gustaria saber si me podeis decir como hacer esto.
tengo que hacer un programa que me lee de un fichero txt una matrices de longitud variable, por ejemplo:
1 2 1 1 1 1 1
en esta matrices no hay 0 sino que se sustituyen por un salto de linea si estan al final o por un espacio si estan en medio.
yo hasta ahora lo que hacia era lo siguiente;
fscanf(files [a], "%[^\n]s", temp)
temp como su nombre dice en una variable temporal del tipo char [] lo suficientemente grande para que coja una linea.
la primera linea me la lee perfectamente, pero ahi se queda solo me lee la primera.
que hay que hacer para que me lea todas las lineas una por una ???
se que lo correcto seria hacer fscanf(files [a], "%d %d %d", temp) pero como es variable la longitud, y los ceros son o espacios o saltos de linea no me funciona bien
gracias por todo
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Estaría bien conocer el código que tienes alrededor de esta función... lo mismo el problema está en cómo has implementado el bucle que lee todas las líneas.
|
|
|
En línea
|
|
|
|
casidus
Desconectado
Mensajes: 39
|
Estaría bien conocer el código que tienes alrededor de esta función... lo mismo el problema está en cómo has implementado el bucle que lee todas las líneas.
de momento no he echo el bucle mi primer problema es leerlo pero seria algo asi for (i = 0; i!=2; i++) { while(hasta fin archivo i) { fscanf(files , "%[^\n]s", temp) array guardar numero linea leida } }
seria algo asi.
si el bucle lo que hace es repetir fscanf(files [a], "%d %d %d", temp) me lo lee, pero entonces tengo el problema de los 0 que no son 0, por eso necesito algo que me lea linea por linea .
gracias por todo
|
|
|
En línea
|
|
|
|
casidus
Desconectado
Mensajes: 39
|
ya lo he solucionado
solo habia que hacer fgetc(files [a]); despues de cada fscanf ahora solo una consulta mas, tengo que hacer este proceso con dos threat, para que sirven los Threat??? creo que son treats, me dicen que use pipe();
Gracias por todo
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Si tu tienes una aplicación monohilo (las que has realizado hasta ahora), y en un momento dado tienes que realizar un proceso pesado que lleve varios segundos, te habrás dado cuenta de que durante ese tiempo la aplicación no responde ante el usuario.
Este efecto se produce porque tu aplicación únicamente dispone de un thread o hilo de ejecución. Como sólo hay un hilo y este está ocupado con el proceso pesado no puede encargarse de interactuar con el usuario.
Ahora por ejemplo imagínate que modificas tu código de tal forma que el proceso pesado se ejecute en un segundo hilo... ahora la aplicación podrá interaccionar con el usuario sin problemas porque un hilo de ejecución estará liado con el proceso pesado mientras que otro segundo hilo que está libre podrá prestar atención a otras tareas, como por ejemplo al usuario.
Programar aplicaciones multihilo permite ofrecer una mejor experiencia al usuario, ya que evitas que la aplicación quede congelada, por ejemplo. Sin embargo, diseñar un entorno multihilo tiene sus complicaciones, ya que te puedes encontrar con situaciones inesperadas como condiciones de carrera o abrazos mortales ( busca en google para más información ).
|
|
|
En línea
|
|
|
|
casidus
Desconectado
Mensajes: 39
|
Si tu tienes una aplicación monohilo (las que has realizado hasta ahora), y en un momento dado tienes que realizar un proceso pesado que lleve varios segundos, te habrás dado cuenta de que durante ese tiempo la aplicación no responde ante el usuario.
Este efecto se produce porque tu aplicación únicamente dispone de un thread o hilo de ejecución. Como sólo hay un hilo y este está ocupado con el proceso pesado no puede encargarse de interactuar con el usuario.
Ahora por ejemplo imagínate que modificas tu código de tal forma que el proceso pesado se ejecute en un segundo hilo... ahora la aplicación podrá interaccionar con el usuario sin problemas porque un hilo de ejecución estará liado con el proceso pesado mientras que otro segundo hilo que está libre podrá prestar atención a otras tareas, como por ejemplo al usuario.
Programar aplicaciones multihilo permite ofrecer una mejor experiencia al usuario, ya que evitas que la aplicación quede congelada, por ejemplo. Sin embargo, diseñar un entorno multihilo tiene sus complicaciones, ya que te puedes encontrar con situaciones inesperadas como condiciones de carrera o abrazos mortales ( busca en google para más información ).
ok, gracias. entonces una consulta, pongamos que el while que lee, que lo hace dos archivos, por lo que hay que repetir el while dos veces, que tendria que hacer para que dos procesos lo ejecuten y asi ahorrar tiempo?????? gracias por todo
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
tengo que hacer un programa que me lee de un fichero txt una matrices de longitud variable, por ejemplo:
1 2 1 1 1 1 1
................................................................... yo hasta ahora lo que hacia era lo siguiente;
fscanf(files [a], "%[^\n]s", temp)
temp como su nombre dice en una variable temporal del tipo char [] lo suficientemente grande para que coja una linea.
la primera linea me la lee perfectamente, pero ahi se queda solo me lee la primera. ..........................................
Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.Creo que resulta más natural usar fgets(temp, 80, files[i])
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 14 Febrero 2014, 20:52 pm por leosansan »
|
En línea
|
|
|
|
casidus
Desconectado
Mensajes: 39
|
Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.Creo que resulta más natural usar fgets(temp, 80, files[i])
¡¡¡¡ Saluditos! ..... !!!! ok, por esa parte ya lo tengo solucionado, ahora me surge otro problema, en concreto 2 mas. uno, tengo dos punteros dobles **A y **B ambos son int, y con malloc quiero convertirlos en arrays para guardar las matrices, tengo esta funcion. int** createMatrix(int n, int m) { int i; int** mat = malloc(n * sizeof (int*)); for (i = 0; i < n; i++) { mat[i] = malloc(m * sizeof (int)); } return mat; }
entiendo que para llamarla tengo qeu hacer esto : A = createMatrix(An, Am); B = createMatrix(Bn, Bm);
An,Am,Bn,Bm son la dimension de la matriz. pero con netbeans el el debugger veo que no me crea el array, por que puede ser????? otra consulta es, como funciona el ???? haber lo que quiero hacer son de momento dos cosas, 1 que ese pipe me cree dos procesos para leer las matrices, y que me creee otros dos procesos para escribir las matrices. gracias por todo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
leer archivo de texto linea a linea
Programación Visual Basic
|
SheKeL_C$
|
2
|
4,280
|
18 Febrero 2006, 17:08 pm
por SheKeL_C$
|
|
|
C# Leer y guardar cada linea de un archivo .txt en una nueva variable
.NET (C#, VB.NET, ASP)
|
extreme69
|
6
|
29,324
|
22 Julio 2011, 00:54 am
por $Edu$
|
|
|
Problema al usar la función fscanf para leer datos en un vector.
Programación C/C++
|
dvc
|
4
|
5,166
|
15 Abril 2012, 22:16 pm
por dvc
|
|
|
Leer un archivo de texto con fscanf y ponerlo en un arreglo de float.
Programación C/C++
|
fafafa01
|
4
|
4,194
|
17 Mayo 2016, 15:32 pm
por AlbertoBSD
|
|
|
(Consulta) Pasando a las funciones fscanf argumentos nulos
Programación C/C++
|
class_OpenGL
|
6
|
3,007
|
30 Julio 2016, 01:51 am
por class_OpenGL
|
|