[Notas] Uso de cin, scanf, gets (fgets), getchar

Notas ~~~

Introducción al uso de cin, scanf, gets (fgets) y getchar

#include<bits/stdc++.h>  

using namespace std;

//char *str[100]; //开一个字符串数组
 char str[100][1000]; 
 
int main()
{
	for(int i=0;i<3;i++)
	//cin>>str[i];
	//scanf("%s",str[i]);
	//fgets(str[i],10,stdin); //可以接收空格,遇到回车认为输入结束

}

1. Scanf 
Scanf generalmente se puede usar para leer números, caracteres y cadenas; 
conclusión: 
(1) Cuando scanf lee un solo carácter (% c) del búfer, si el primer carácter del búfer es un espacio, tabulación o Cuando estos separadores están ajustados, scanf no los ignorará, los leerá y borrará. 
(2) Cuando scanf lee un número o cadena (no un solo carácter) del búfer, si el primer carácter en el búfer es un espacio, tabulador o separador de nueva línea, scanf lo ignorará, lo borrará y continuará. Lea el siguiente carácter, si el búfer está vacío, continúe esperando. Pero si la lectura es exitosa, el delimitador después del carácter se deja en el búfer y scanf no lo procesará. 
(3) Cuando scanf lee una cadena de caracteres, cuando encuentra un espacio, un retorno de carro y una tecla Tab, se considerará como el final de la entrada. Cuando se encuentra un retorno de carro, las teclas de espacio y tabulación agregarán automáticamente '\ 0' después de la cadena, pero las teclas de retorno de carro, espacio y tabulación aún permanecerán en el búfer de entrada. (Por lo tanto, no puede recibir cadenas que contengan espacios, retornos de carro o tabulaciones) 
(4) scanf () Al leer una cadena, la 
sintaxis: scanf ("cadena de control de formato", lista de direcciones de variables); 
al aceptar una cadena: scanf ("% s", nombre de la matriz de caracteres o puntero);

2.Gets (hay una vulnerabilidad de desbordamiento de búfer, se recomienda usar fgets)
gets generalmente solo se usa para leer cadenas; 
conclusiones: 
(1) Gets puede recibir espacios e ingresa un retorno de carro como el final de la entrada; 
(2) gets puede aceptar un retorno de carro Todos los caracteres ingresados ​​antes de la clave y reemplace '\ 0' con '\ n'. La tecla Enter no permanecerá en el búfer de entrada. 
(3) gets () Al leer una cadena, la
sintaxis: gets (nombre de matriz de caracteres o puntero); 
(4) La variable s en la función gets (s) es un puntero de cadena. Si es un puntero de un solo carácter, no habrá ningún error en la compilación y vinculación, pero error de desbordamiento de memoria después de ejecutar. 
(5) La función de obtención se puede leer infinitamente y el límite superior no se juzga. La lectura finaliza con un retorno de carro, por lo que el espacio del búfer debe ser lo suficientemente grande como para que no se produzca un desbordamiento cuando se realiza la operación de lectura.

3. getchar 
getchar () lee un carácter (incluido el espacio, el retorno de carro y el tabulador) en la secuencia del búfer de entrada; tenga en cuenta que la función getchar solo puede aceptar un carácter y el número de entrada también se procesa como un carácter. Cuando se ingresa más de un carácter, Solo se recibe el primer carácter. 

Cuarto, el
operador cin  lee los datos según el tipo de variable subyacente. 
Condiciones de fin de entrada: se encuentran las teclas Intro, Espacio y Tabulador. 
Procesamiento de terminador: descarte el terminador (Enter, Space, Tab) que hace que la entrada termine en el búfer 

Supongo que te gusta

Origin blog.csdn.net/melon_sama/article/details/107928578
Recomendado
Clasificación