Guest User

Untitled

a guest
Sep 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. Hola, te contest entre líneas.
  2.  
  3. El fscanf va a tratar de seguir leyendo la entrada. Te conviene leer línea por línea, y a cada línea buscarle los 3 enteros:
  4.  
  5. for (j = 0; j < number_of_edges; j++) {
  6. char line[MAX_LINE_LENGTH];
  7. size_t chars_read;
  8. char new_line;
  9. fscanf (file, "%[^\n]%n%c", line, &chars_read, &new_line);
  10. int ret = sscanf(line, "%d %d %d", &a, &b, &c);
  11. if (ret != 3) {
  12. ... /* error */
  13.  
  14. y conviene poner el código que lee una sola línea de un archivo, en una función aparte, para reutilizar ese código.
  15.  
  16. Lo que entiendo de ese codigo es que guarda en line toda la linea que leyo de file, en chars_read la cantidad de chars que leyo, y en new_line el "\n", pero no se para que usa el chars_read ni el new_line.
  17.  
  18.  
  19. Lo probaste al código? Te fijaste de imprimir los valores de las variables que mencionás?
  20.  
  21. Si lo hubieras hecho te habrías dado cuenta de que ambas variables tienen los valores cuyos nombres se indican:
  22. chars_read: cantidad de caracteres leídos.
  23. new_line: línea leída (sin el \n del final)
  24.  
  25. Para mayor detalle te recomiendo que leas la documentación de la familia de funciones de "scanf".
  26.  
  27.  
  28. Luego cuando me dice que tengo que hacer la funcion que lee una sola linea, esa funcion ¿que deberia devolver?, line?
  29.  
  30. Depende de cómo lo quieras hacer. No hay una respuesta "correcta" acá. Hacelo que devuelva lo que necesites.
  31.  
  32. La verdad que es lo unico que me falta del tp y no tengo idea como solucionarlo.
  33.  
  34.  
  35. Podés probar con googlear un poco, estoy seguro de que hay mucha información de cómo leer una línea de un archivo en internet.
  36.  
  37. 2) Una cosita con respecto al Makefile:
  38.  
  39. Cuando duilio explico como hacerlo en clase nos puso que habia que poner la informacion de *.c en un archivo Makefile con el comando $ gcc -MM *.c >Makefile y luego editar ese Makefile agregandole esto:
  40.  
  41. Myprog: *.o
  42. <tab>gcc -Wall -o Myprog *.o
  43. {La informacion obtenida con el codigo $ gcc -MM *.c >Makefile}
  44.  
  45. En la segunda linea no seria *.c para que compile bajo el nombre de Myprog todos los .c del fichero donde estoy?
  46.  
  47.  
  48. Una cosa es "compilar" y otra "enlazar". A lo que se suele llamar "compilar" es a la suma de las 2 cosas. Lo que Duilio explicó es para "compilar" en el sentido estricto de su definición, por eso la salida son archivos ".o".
  49.  
  50. Saludos,
  51. Gerardo
Add Comment
Please, Sign In to add comment