Hola
Estoy escribiendo en lenguaje C usando Ubuntu. Cuando quiero compilar mi código escribo lo siguiente.
link@Sempron:~/Desktop$ cc lee_wav_header.c -o lee_wav_header.exe
lee_wav_header.c:5:19: error: stdio.h: No such file or directory
lee_wav_header.c:6:48: error: fcntl.h: No such file or directory
lee_wav_header.c:7:52: error: stdlib.h: No such file or directory
lee_wav_header.c: In function ‘main’:
lee_wav_header.c:26: warning: incompatible implicit declaration of built-in function ‘printf’
lee_wav_header.c:31: warning: incompatible implicit declaration of built-in function ‘fprintf’
lee_wav_header.c:31: error: ‘stderr’ undeclared (first use in this function)
lee_wav_header.c:31: error: (Each undeclared identifier is reported only once
lee_wav_header.c:31: error: for each function it appears in.)
lee_wav_header.c:32: warning: incompatible implicit declaration of built-in function ‘exit’
lee_wav_header.c:36: error: ‘O_RDONLY’ undeclared (first use in this function)
lee_wav_header.c:42: warning: incompatible implicit declaration of built-in function ‘exit’
lee_wav_header.c:46: error: ‘SEEK_SET’ undeclared (first use in this function)
link@Sempron:~/Desktop$
Y pues esos son los errores que me salen. Normalmente cuando ejecuto el comando cc en el servidor de mi escuela se compila todo correctamente, pero aquí me da error de ubicación de los archivos .h.
¿Qué debo hacer para que cc compile bien?
El programa que estoy probando es el siguiente.
#include <stdio.h>
#include <fcntl.h> /* Modos de apertura */
#include <stdlib.h> /* Funciones de archivos */
/*
tambytes contiene el tamaño del archivo
canales contiene el número de canales del archivo
fmuestreo da la frecuencia de muestreo
baudios da los bits por segundo
bloque da la alineación de bloque
bitsmuestra da la resolución de cada muestra
*/
int tambytes, canales, fmuestreo, baudios, bloque, bitsmuestra;
char acumulador[4]; //recibe datos de la cabecera temporalmente
char headerwav[25]; //recibe la cabecera completa + EOF
int archivo; //recibe el descriptor de archivo a analizar
main(int argc, char * argv[])
{
//Imprime saludo
printf("\nPrograma que lee la cabecera de un archivo WAV.\n");
//Verifica que se hayan dado bien los parámetros
if(argc!=2) //ejecutable y archivowav
{
fprintf(stderr,"\nUso del programa: \"%s\" archivo.wav\n", argv[0]); //uso del lector de header
exit(-1); //termina programa indicando que -1 es error (return -1)
}
//Abre el archivo que indicó el usuario, solo lectura
archivo = open (argv[1], O_RDONLY);
//Comprueba que existe el archivo
if(archivo==-1)
{
perror("\nNo se puede abrir el archivo: ");
exit(-1); //termina el programa
}
// Coloca el puntero en la posición 0 para copiar toda la cabecera
lseek(archivo,0,SEEK_SET);
read(archivo, headerwav, 24); //lee 24 bytes y los deposita en headerwav
headerwav[24]=0; //deposita el EOF al final de la cadena
//imprime en pantalla el contenido del header wav
printf("\nEl header de su archivo wav contiene lo siguiente: \n %s",headerwav);
printf("\n");
close(archivo); //cierra el archivo wav que se leyó
}
Gracias.