UTNianos

Versión completa: AYUDA . No me compila el codigo de archivos en c (Code blocks)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
HOLA!!! Este codigo no me compila y no entiendo que es lo que tengo que corregir. Me podrian ayudar??? Gracias. Uso codeblocks


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#define n 100

struct registro
{
int codigo;
int medicion;
char descripcion[20];
}
var_registro, p_registro, ae_registro[n];

int main()
{
char tecla, caracter;
FILE *p_lectura_t, *p_escritura_t, *p_lectura_w, *p_escritura_w;

p_lectura_t = fopen("datos1.txt","r");
if (p_lectura_t == NULL)
{
printf("Error al leer el archivo datos1.txt. \n");
printf("Saliendo de la aplicacion...\n");
tecla=getchar();
return(1);
}

p_escritura_t = fopen("datos1.bak","w");
if (p_lectura_t == NULL)
{
printf("Error al leer el archivo datos1.bak. \n");
printf("Saliendo de la aplicacion...\n");
getchar();
return(1);
}
}
caracter = fgetc(p_lectura_t);
while (feof(p_lectura_t)==0)
{
printf("%c",caracter);
fputc(caracter,p_escritura_t);
caracter = fgetc(p_lectura_t);
}

fclose(p_lectura_t);
fclose(p_escritura_t);

LOS ERRORES SON:

In function 'main'
|19|warning: variable 'p_escritura_t' set but not used [-Wunused-but-set-variable]
|18|warning: unused variable 'caracter' [-Wunused-variable]
|18|warning: variable 'tecla' set but not used [-Wunused-but-set-variable]
|39|warning: data definition has no type or storage class [enabled by default]
|39|warning: type defaults to 'int' in declaration of 'caracter' [-Wimplicit-int]
|39|error: 'p_lectura_t' undeclared here (not in a function)
|40|error: expected identifier or '(' before 'while'
|47|warning: data definition has no type or storage class [enabled by default]
|47|warning: type defaults to 'int' in declaration of 'fclose' [-Wimplicit-int]
|47|warning: parameter names (without types) in function declaration [enabled by default]
|48|warning: data definition has no type or storage class [enabled by default]
|48|warning: type defaults to 'int' in declaration of 'fclose' [-Wimplicit-int]
|48|warning: parameter names (without types) in function declaration [enabled by default]|In function 'main':
|38|warning: control reaches end of non-void function [-Wreturn-type]
Te falta cerrar el main y un return para empezar =P
Cuando pones compilar que errores te tira y en q línea? Así a la ligera da paja, no somos compiladores jaja
Hola mpf10. lo mejor que podes haces es aprender a interpretar lo qeu te dice el compilador. a pesar de que feer el compilador humano te dio la solucion, esa solo sirve para este caso.

si queres pone aca que te tiraba y te damos una mano para interpretarlo
Hola...
Ya anda =D
Te faltaba una llave, eso porque identas mal... te faltaba un return y una llave al final!

Te lo dejo:



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#define n 100

struct registro{
int codigo;
int medicion;
char descripcion[20];
}var_registro, p_registro, ae_registro[n];

int main(){

char tecla, caracter;
FILE *p_lectura_t, *p_escritura_t, *p_lectura_w, *p_escritura_w;

p_lectura_t = fopen("datos1.txt","r");
if (p_lectura_t == NULL){
printf("Error al leer el archivo datos1.txt. \n");
printf("Saliendo de la aplicacion...\n");
tecla=getchar();
return(1);
}

p_escritura_t = fopen("datos1.bak","w");
if (p_lectura_t == NULL){
printf("Error al leer el archivo datos1.bak. \n");
printf("Saliendo de la aplicacion...\n");
getchar();
return(1);
}
caracter = fgetc(p_lectura_t);
while (feof(p_lectura_t)==0){
printf("%c",caracter);
fputc(caracter,p_escritura_t);
caracter = fgetc(p_lectura_t);
}
fclose(p_lectura_t);
fclose(p_escritura_t);
return(1);
}




Saludos.
return 0 en todo caso.
(18-11-2014 23:55)Feer escribió: [ -> ]Hola...
Ya anda =D
Te faltaba una llave, eso porque identas mal... te faltaba un return y una llave al final!

Te lo dejo:



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#define n 100

struct registro{
int codigo;
int medicion;
char descripcion[20];
}var_registro, p_registro, ae_registro[n];

int main(){

char tecla, caracter;
FILE *p_lectura_t, *p_escritura_t, *p_lectura_w, *p_escritura_w;

p_lectura_t = fopen("datos1.txt","r");
if (p_lectura_t == NULL){
printf("Error al leer el archivo datos1.txt. \n");
printf("Saliendo de la aplicacion...\n");
tecla=getchar();
return(1);
}

p_escritura_t = fopen("datos1.bak","w");
if (p_lectura_t == NULL){
printf("Error al leer el archivo datos1.bak. \n");
printf("Saliendo de la aplicacion...\n");
getchar();
return(1);
}
caracter = fgetc(p_lectura_t);
while (feof(p_lectura_t)==0){
printf("%c",caracter);
fputc(caracter,p_escritura_t);
caracter = fgetc(p_lectura_t);
}
fclose(p_lectura_t);
fclose(p_escritura_t);
return(1);
}




Saludos.


Hola! Muchas gracias por tu ayuda y tu tiempo. Saludos.

GRACIAS a todos por molestarse en ayudar!!! =)=D
Parece que estas compilando con -Werror -Wall (o al menos con -Wunused-variable).
El "warning: variable 'p_escritura_t' set but not used" se debe a eso. Por las dudas, te vendría bien aprenderte, sino lo que hace un make, al menos las flags que le pasas al compilador.
en criollo: podes configurar para que el compilador de C no te tire ciertos tipos de warnings (avisos).

Por ejemplo, en tu caso te está avisando que declaraste una variable que nunca usaste, algo que no sería un "error" de compilación, pero te avisa si por casualidad te quedó una variable colgada de más.
En realidad es mucho más preferible laburar con los warnings habilitados. Tu código va a compilar igual, pero probablemente no funcione como querrías, o bien te van a indicar que estás haciendo cosas mal (como declarar variables que no usás, o cosas por el estilo).
URLs de referencia