Fgets, obtiene y fputs, pone

  
 

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.

Copyright © Conocimiento de Windows All Rights Reserved