Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre Scanfor y cin

La diferencia entre Scanfor y cin

1.cin es un objeto de tipo C ++, el tipo es basic_istream, scanf es una función con parámetros variables.

La clase a la que pertenece 2.2.cin sobrecarga el operador >>, lo que facilita la escritura, como

double d;cin >>d;

Scanf es diferente,

Double d scanf("%lf", & ampd);

Parece un poco problemático.

Además, cin es más seguro y no provocará un desbordamiento de la memoria.

char c;scanf("%lf", & ampc); // En este momento, se requieren 8 bytes de espacio, pero solo se proporciona uno y la memoria se desborda.

Cin es más seguro.

char c; CIN & gt; & gtc; // Ingrese solo caracteres sin desbordamiento.

3. Desde una perspectiva de bajo nivel, cin en C++ y scanf en lenguaje C usan stdin como fuente de entrada, pero cin y scanf usan buffers diferentes. Puede configurar el búfer * * * para compartir a través de la función sync_with_stdio() en el archivo de encabezado de ios.

C++ también puede cambiar la fuente de entrada, pero es muy complicado.

De hecho, C++ encapsula stdin y utiliza flujo e iterador para cambiar el concepto de flujo, mientras que scanf de C opera directamente stdin.

Función de entrada de formato de lenguaje 4.cin

y

C

Precauciones de uso

(Nota: El código fuente de este artículo no contiene archivos de encabezado; edítelo usted mismo durante el experimento)

Lea y opere para que realmente pueda comprender el truco:

5.

Función de escaneo ()

:

Las más utilizadas son

(1)

scanf("%s ", a); //a

es un puntero a una cadena;

Ejemplo:

int main(){

char a [20];

scanf("%s ", a);

printf("%s ", a); //

Salida carácter Caracteres en la columna

a

Devuelve 0

}

Nota

1, este método para obtener una cadena puede tener un retorno de carro delante.

\n '

, ¡atención! Puedes intentarlo. Entrada

Cuando presionas la tecla Enter al frente y luego ingresas un conjunto de caracteres, la salida siguen siendo los caracteres que generas.

2. Después de intentar subir al coche, vuelve a correr y luego te añades delante.

n

Espacio, luego ingresa un consecutivo.

Personajes,

Mira lo que pasa. Notarás que ignora todos los espacios anteriores.

Si quieres,

puedes, por supuesto, o

usar expresiones regulares, o

gets();

p>

Por ejemplo:

Obtener (a);

De esta forma también se pueden registrar los espacios que ingreses.

Inténtelo de nuevo

Ingrese una longitud continua de caracteres, seguido de un espacio, y luego ingrese:

Por ejemplo, ingrese el nombre de una persona.

Cuando la palabra "

Bill

Gates

" encontrará que la salida es solo

Bill

p>

y

Gates

Así que al diablo con la entrada de nombres y la entrada

Noodles también, es mejor usarlos.

obtiene();

Función.

(2)scanf("%c ", & ampa); //

Presta atención a los símbolos de dirección;

Ejemplo:

int main(){

char a;

scanf("%c ", & ampa);

printf("%c ", a); //

Caracteres de salida

Caracteres en un

Devuelve 0;

}

Nota:

Si hay un retorno de carro al obtener caracteres,

absorbelo.

Puedes probar esto,

Ejecutar el programa anterior,

Ingresar al auto una vez,

Mira con atención, dejó algunos La línea está en blanco.

(Ingresaste la primera línea, la segunda línea es

Función de impresión

Salir

a

valor)

, comprende el misterio.

¿Has terminado?

(3)

scanf("%d ", & ampa);

Ejemplo

int main(){

p>

int a;

scanf("%d ", & ampa);

printf("%d ", a);

Emite el valor en un número entero

a

;

Devuelve 0;

}

Nota: Esta entrada y (

1

) ignorarán automáticamente el retorno de carro anterior.

\n '(

En realidad es un

Código estándar de intercambio de información estadounidense

yarda

)