Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
¿Por qué mi función de anulación de otro archivo no se ejecuta en este programa C?

Quiero imprimir el contenido de un archivo txt (primer parámetro), pero la función para hacerlo está en un archivo diferente. Tengo el siguiente archivo principal:

 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "fileoperation.h" int main(int argc, char **argv) { read(argv[1]); return 0; }

y luego en el archivo fileoperation.c tengo:

 #include "fileoperation.h" void read(char* file) { FILE *fptr; char c; fptr = fopen(file, "r"); if (fptr == NULL) { printf("Cannot open file \n"); exit(0); } c = fgetc(fptr); while (c != EOF) { printf ("%c", c); c = fgetc(fptr); } fclose(fptr); }

Si escribo el código de la función en la función principal, funciona. no entiendo porque no funciona

El archivo de encabezado de fileoperation.c es

 #ifndef FILEOPERATION_H #define FILEOPERATION_H #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void read(char* file); #endif
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Renombra tu función. read existe en las bibliotecas de respaldo. Para empeorar las cosas, el compilador sabe lo que hace y lo optimiza.

Podría haber sido peor. Podría haber reemplazado la read real con la suya y ampliar las bibliotecas estándar.

over 4 years ago · Santiago Trujillo Report

0

Parece que está utilizando un compilador no estándar o lo ha configurado incorrectamente. Se sabe que los compiladores como gcc y clang invocan un comportamiento no compatible a menos que compile con -std=c17 -pedantic-errors (consulte ¿Qué opciones de compilador se recomiendan para los principiantes que aprenden C? ). No puedo reproducir el problema usando un compilador compatible con C.

Un compilador compatible no puede colocar identificadores no estándar en encabezados estándar que no sean los reservados explícitamente por el estándar C. Ejemplos de identificadores reservados son aquellos con dos guiones bajos iniciales, aquellos con un guión bajo inicial seguido de una letra mayúscula e identificadores reservados para futuras extensiones de idioma/biblioteca. Fuente: ISO 9899:2018 capítulos 4/6, 7.1.3, 6.11 y 7.31.

Los compiladores mencionados deben eliminar todas las declaraciones de identificadores no estándar al compilar en modo compatible con lenguaje C como se describe anteriormente. Si no es así, ha encontrado un error en la biblioteca del compilador.

Existe una función antigua, bien conocida (e increíblemente mal nombrada) read , pero nunca ha sido parte de la biblioteca estándar de C. (POSIX intentó estandarizarlo, pero eso es irrelevante aquí). Entonces, la solución fácil es simplemente no nombrar una read de identificador, no tanto porque una función no estándar bien conocida tenga ese nombre, sino porque es muy pobre y no -nombre identificador descriptivo. En tu caso, podrías haber usado read_file o similar.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!