Sabemos que ambas funciones permiten ingresar una línea a la vez. Sin embargo, gets es una función en desuso. El motivo es que no puede especificar la longitud del búfer con get, lo que puede hacer que el búfer se desborde. Además del hecho de que solo se puede manipular la entrada estándar (stdin), hay otra diferencia entre get y fgets — — gets no lee caracteres de nueva línea en el búfer. Por ejemplo: ingrese " abcde \\ n ", luego solo use " abcde " en el búfer al obtener, y no " \\ n ". En contraste, los fgets se leerán en su totalidad con " abcde \\ n ".
En consecuencia, las entradas se utilizan generalmente en pares con las que se obtiene, por lo que coloca la salida en una cadena que termina en NULL (NULL no se genera) y también generará una nueva línea en la salida estándar.
Primero veremos el siguiente bloque:
Programa 1:
char buf [BUFSIZE];
while (fgets (buf, BUFSIZE, stdin)! = NULL)
if (fputs ( Buf, stdout) == EOF)
printf (" error de salida! \\ N ");
Salida:
Conclusión: los fgets y fputs trabajan juntos normalmente. Análisis: Entrada " abcdef \\ n ", los fgets leen en " abcdef \\ n " al búfer, los fputs " abcdef \\ n " sacarán la salida del búfer.
Programa 2:
char buf [BUFSIZE];
while (gets (buf)! = NULL)
if (puts (buf) == EOF)
printf (" salida Error! \\ N ");
Salida:
Conclusión: La combinación de obtener y poner funciona normalmente en Análisis: Ingrese " abcdef \\ n ", se lee en " abcdef " en el búfer (nota: No leas en ’ \\ n ’), puts tomará la salida del búfer y luego emitirá una nueva línea (‘ \\ n ’) a la salida estándar, es decir, gets no lee la nueva línea, y Pone añade un carácter de nueva línea.
Programa 3:
char buf [BUFSIZE];
while (gets (buf)! = NULL)
if (fputs (buf, stdout) == EOF)
printf (" error de salida! \\ n ");
Salida:
Conclusión: La combinación de gets y fputs no funciona correctamente
Análisis: Ingreso " abcdef \\ n " se lee " abcdef " en el búfer (Nota: no lea en ’ \\ n ’), fputs "tomará la salida del búfer (sin añadir una nueva línea), la entrada de la siguiente línea estará en la misma línea que la salida anterior, lo que dará como resultado una salida Un salto de línea menos que la entrada.
Programa 4:
char buf [BUFSIZE];
while (fgets (buf, BUFSIZE, stdin)! = NULL)
if (puts (buf) == EOF)
printf (" error de salida! \\ n ");
Salida:
Conclusión: La combinación de fgets y puts no funciona correctamente
Análisis: Entrada " abcdef \\ n ", fgets se lee en " abcdef \\ n " En el búfer, las tomas tomarán la salida del búfer (ya hay una nueva línea aquí), y luego emitirán una nueva línea, de modo que la salida tenga una nueva línea que la entrada (salida dos nuevas líneas) ).
Resumen: debe tratar de usar fgets y fputs, por un lado, es relativamente seguro, en los dos una parte intacta de las entradas y salidas, no tiene que recordar para hacer frente a los saltos de línea.
1. Cuando Liunx recién comenzó a reiniciar. Aquí presionamos la tecla " e " para ing
El icono en la esquina superior izquierda de Windows7 Explorer, Favoritos, Escritorio y varios icono
No hay duda de que Red Hat es la elección de muchas compañías que consideran Linux, pero en los últi
Hoy, de repente, un capricho, quiero experimentar Mac Os, escuché que la máquina virtual instalada e
Cómo usar una unidad óptica virtual bajo Linux
mecanismo malloc Análisis uClibc
Centos6.5 instalar jdk1.7 pasos detallados
Si el sistema Linux está pirateado Cómo juzgar
El significado de X-Cache y X-Cache-Lookup en Squid
Solución muerta tarjeta gnome-shell
Notas personales sobre Linux Virtual Memory Management
Administración y mantenimiento de sistemas Linux - comando cpio
Programación de procesos Linux
Cómo agregar enrutamiento estático para Linux
Resumen del controlador de dispositivo Linux: el concepto básico del kernel
¿Cómo agrega Win10 un icono del panel de control al escritorio para abrir rápidamente el
Rompiendo el número de carpetas personalizadas de XP
Cómo configurar el número de líneas de desplazamiento del mouse en el sistema Vista
Actualice Windows 8 de Beta a la versión RC. Build 8306
Cómo cambiar de diapositivas en Windows10 PowerPoint2016 "Smooth"
Win8 /Win8.1 fun virtual machine one: Artículos de configuración de instalación de Hyper-V
Win10 devuelve la barra de tareas a la parte inferior de la pantalla de dos maneras