¡Buenas a todos!
Tengo un problemilla con el open y el read. Este es mi codigo.
char * leeFichero(char * path){
char * datos="";
int f=0;
int fileSize=100;
f=open(path, O_RDONLY);
if(!f) return 0;
read(f,datos,fileSize);
printf("datos: %s\n",datos);
return datos;
}
El caso es que el printf(datos) me sale vacio a pesar de que le paso un path correcto de un fichero con datos...
Y otra cosa mas, ¿como puedo calcular el tamaño del fichero? porque he puesto fileSize=100 porque no sabia calcularlo xD
Gracias, un saludo.
El problema se debe a la sentencia:
char * datos="";
En ella declaras el puntero "datos" que utilizaras en la llamada a "read", el problema se debe a que ese puntero:
1) Apunta a una cadena literal y estas no deben modificarse.
2) Aun cuando fuera posible el array solo tiene capacidad para un elemento (el '\0').
Si vas a leer cien caracteres puedes simplemente declarar un array con esa capacidad y pasarlo a la función.
Y para conocer el tamaño en bytes del archivo si estas utilizando Linux (como parece ser el caso) puedes utilizar la función stat (http://linux.die.net/man/2/stat).
Un saludo
Cita de: soyloqbuskas link=topic=372382.msg1788640#msg1788640
Y otra cosa mas, ¿como puedo calcular el tamaño del fichero? porque he puesto fileSize=100 porque no sabia calcularlo xD
CitarPrueba con:
fseek(fichero, 0L, SEEK_END);
printf("prueba.txt ocupa %d bytes", ftell(fichero));
Saludos!.
!!!Muchas gracias a todos por las respuestas!!!
Un saludo.