Tecnología

Inicio

Diferencia entre fgetc y getc

Diferencia entre fgetc y getc


El lenguaje de programación C le permite obtener datos de un archivo o el teclado utilizando las funciones fgetc o getc. Ambas funciones toman el siguiente carácter disponible de un flujo de datos y almacenarlo como un unsigned char. Estas dos funciones se utilizan para el mismo propósito y se puede utilizar de forma intercambiable si se toman ciertas precauciones.

Implementación

A menudo hay muchas maneras legítimas para llevar a cabo una tarea de programación utilizando la instancia C language.for, tanto fgetc y getc son parte del estándar de C Archivo de inclusión, "stdio.h". Fgetc se implementa como una función C-idioma. Getc, por otra parte, se puede obtener como una función o como una macro. Por ejemplo, es posible que getc incluye en el archivo "stdio.h" como el código siguiente:

definir getc (f) ((- ((f) -> nivel)> = 0) (unsigned char) (++ (f) -> CURP) [- 1]:? _fgetc (f))

Cada vez que el preprocesador de C analiza el código fuente y encuentra el identificador "getc" con los parámetros encerrados entre paréntesis, inserta los parámetros en el token de reemplazo que define getc. Siempre y cuando los parámetros no son expresiones, la macro siempre devolverá el mismo resultado que fgetc.

Actuación

Getc a veces se implementa como una macro para impulsar el rendimiento de las aplicaciones mediante el aumento de la velocidad de ejecución y reducir la sobrecarga de procesamiento. Cuando se utiliza fgetc en un programa, se gastan recursos de procesador y memoria de seguimiento de la ejecución de instrucciones de la función, las variables de registro creados, así como el trabajo real que hay que hacer para devolver un carácter del flujo de datos. Desde la macro getc se compila en línea antes de que el programa se ejecuta siempre, no hay una función mayor altura y su aplicación puede correr más rápido.

Efectos secundarios

A veces es preferible utilizar fgetc en lugar de getc a fin de evitar errores causados ​​por los efectos secundarios de expansión de macro. Los efectos secundarios pueden ocurrir cuando una macro getc se da parámetros que son expresiones en lugar de variables. expansión de macro incorrecta puede provocar múltiples intentos de acceso a la secuencia de datos que puede producir resultados inesperados. Esto se puede prevenir mediante el uso de fgetc lugar o mediante la evaluación de la expresión primero, a continuación, pasar la variable resultante o puntero a getc.

Cruz Compatibilidad

Fgetc como una función se encuentra en todos los compiladores de C que se ajustan a la norma American National Standards Institute o ANSI C. Cuando se trata de getc, sin embargo, las cosas no suelen ser tan estándar. A veces, getc se define como simplemente como otro nombre para fgetc:

definir fgetc getc (corriente) (corriente)

Cuando getc se implementa como una función, sin embargo, a mantener al mismo tiempo la compatibilidad de idiomas con otros compiladores de C y eliminar la posibilidad de efectos secundarios macro.