C/Visual C - Dudas con lenguaje C

 
Vista:

Dudas con lenguaje C

Publicado por Paz López (4 intervenciones) el 06/02/2016 17:42:17
Hola a todos foreros, muy buenas tardes.

Os cuento, resulta que tengo que hacer un programa en C que permita visualizar diferentes líneas de un fichero
supuesto que la longitud de las líneas de ese fichero sea de 64 caracteres.

En ese supuesto fichero hay varias líneas con distintos mensajes, y el programa me pide que se visualicen diferentes líneas suponiendo que la longitud de las líneas sean de 64 caracteres.

¿Me podéis ayudar?

Muchisimas gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Dudas con lenguaje C

Publicado por agustin (272 intervenciones) el 06/02/2016 21:32:04
fopen, fseek, ftell, fread, printf, y fclose. Esas son las funciones que necesitas. Pon tu código y pregunta dudas concretas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dudas con lenguaje C

Publicado por Paz López (4 intervenciones) el 06/02/2016 21:36:05
Hola agustin, muchisimas gracias por contestar. Lo primero que hice fue abrir el fichero, pero ahora tocaria poner un puntero en la primera posición de la primera línea. ¿Como podria hacer eso?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dudas con lenguaje C

Publicado por Paz López (4 intervenciones) el 07/02/2016 11:51:02
Hola agustín.

Tengo el siguiente código, pero ahora no doy posicionado el puntero en la primera línea del archivo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
	FILE *fichero;
	char letra;
 
	fichero = fopen("/home/pazlopez/Escritorio/mensajes.data","r");
	if (fichero == NULL) {
		printf( "No se puede abrir el fichero.\n" );
		exit( 1 );
	}
 
	letra = getc(fichero);
	while (feof(fichero) == 0) {
		printf( "%c",letra );
		letra = getc(fichero);
	}
 
	if (fclose(fichero)!= 0)
		printf( "Problemas al cerrar el fichero\n" );
}

Me podéis ayudar? Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Dudas con lenguaje C

Publicado por agustin (272 intervenciones) el 07/02/2016 17:23:49
Usa fread ya que sabes que el tamaño de la cadena a leer es siempre el mismo. getc no es lo más adecuado ya que se usa para leer del buffer de entrada y en todo caso sería fgetc y ya sabiendo que es un tamaño fijo podrías usar fgets para leer una cadena de golpe pero eso lee cadenas de texto y no lee binario. fread lee binario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dudas con lenguaje C

Publicado por Paz López (4 intervenciones) el 08/02/2016 20:32:23
Hola Agustín, muchisimas gracias por contestar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# include <fcntl.h>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <unistd.h>
# define LL 64
 
int main(int np, char* a[])
{
FILE *fp;
fp = fopen ("/home/pazlopez/Escritorio/mensajes.data","r");
int b, id, h;
char alm[LL+1];
if (np==3)
{
 
char buffer[64];
 
fscanf(fp, "%s", buffer);
printf("%s",buffer);
 
b=atoi(a[2]);
id=open(a[1],O_RDWR);
if ((id!=-1)&&(lseek(id,(b-1)*LL,0)!=-1)
&&(read(id,alm,LL)>0))
{printf("\n");for(h=0;h<LL;h=h+1)
printf("%c",alm[h]);
printf("\n");
 
}
else
printf("\nError\n");
 
}
else
 
exit(1);
 
return 0;
fclose (fp);
}

El código que al final he podido compilar sin errores, pero a la hora de ejecutarlo no hace nada, no me sale nada en consola.

No sé donde puede estar el problema porque es como si no leyese nada de nada y cerrase el archivo antes de tiempo.

Me puedes echar un cable? Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar