una samsung programa para online mejor impresora formato escanear documentos documento digitalizar desde con como celular c formatting scanf

samsung - mejor formato para escanear documentos



Diferencia entre diferentes formatos de escaneo (2)

Esta pregunta ya tiene una respuesta aquí:

Actualmente me estoy preparando para la escuela de programación revisando el libro de texto. Hay una pregunta en particular que no entiendo y el libro de texto no da la respuesta.

PD: He aprendido algo de C ++ / C # en línea, pero nunca paso por clases de programación adecuadas, así que estoy luchando con algunos de los conceptos.

P: Para cada uno de los siguientes pares de cadenas de formato de scanf, indique si las dos cadenas son equivalentes o no. Si no lo son, muestra cómo se pueden distinguir.

A) "%d" versus " %d"
B) "%d-%d-%d" versus "%d -%d -%d"
C) "%f" versus "%f "
D) "%f,%f" versus "%f, %f"

En primer lugar, ni siquiera entiendo lo que hace la pregunta. ¿Qué significa el libro de texto por si las 2 cadenas son o no ''equivalentes''?

Si lo son, ¿podría alguien explicar las diferencias y posiblemente mostrarme cómo se pueden distinguir?


De Wikipedia

espacios en blanco: cualquier carácter en blanco desencadena un escaneo de cero o más caracteres en blanco. La cantidad y el tipo de caracteres en espacios en blanco no necesitan coincidir en ninguna dirección.

scanf se trata de seguir consumiendo la entrada y obtener lo que te importa. El carácter normal en cadena de formato significa que consume exactamente el mismo carácter y no hace nada más. %d , %f podría omitir el espacio en blanco inicial. Entonces, resuma, tenemos:

  • A, es lo mismo, porque %d omite el espacio principal
  • B, %d-%d-%d es bastante estricto, lee un entero después de exactamente - y luego otro entero, y así sucesivamente, por lo que lee 1-2-3 bien, 1- 2- 3 también, pero falla en 1 - 2 - 3 . Mientras que, por otro lado, %d -%d -%d primero omite espacios, lee un número entero, omita espacios, espera caracteres - , luego salte espacios, y así sucesivamente ...
  • C, espacios al final no hace la diferencia
  • D, es lo mismo, porque %f omite espacios principales, también

Entonces la respuesta sería B.


Primero probemos A : "%d" versus " %d" , son cadenas de formato equivalentes para scanf() .

" " hará lo siguiente. Nunca falla
1) Escanee y descarte (omita) el espacio en blanco opcional.
2) Después de leer un espacio no blanco o un final de archivo, si no (EOF), la última lectura de caracteres se vuelve a poner en stdin .

"%d" intentará 3 cosas (puede fallar)
1) Escanee y descarte (omita) el espacio en blanco opcional.
2) Escanee y convierta el texto numérico que representa un número entero decimal.
3) Después de leer un texto no numérico o de fin de archivo, si no (EOF), la última lectura de caracteres se vuelve a colocar en stdin .

" %d" hace las dos cosas anteriores. Es el mismo resultado de simplemente hacer el 2do con "%d" .

Con los especificadores *scanf() nota:

Los caracteres de espacio en blanco de entrada (según lo especificado por la función isspace ) se omiten, a menos que la especificación incluya un especificador [ , c , o n . C11 §7.21.6.2 8

B , C , D diferencias?

Pase el mouse sobre la sugerencia 1:

Un " " antes de un especificador scanf() , excepto el 3 indicado anteriormente, es un formato scanf equivalente () como sin él.

Pase el mouse sobre la sugerencia 2:

Solo 1 de 3 equivalentes.

Pase el mouse sobre la sugerencia 3:

Considere las entradas:
"123 -456-789"
"123.456 x" ¿Cuál es el siguiente personaje que se leerá?

B) "%d-%d-%d" versus "%d -%d -%d"
C) "%f" versus "%f "
D) "%f,%f" versus "%f, %f"

Responder:

Awww, ¿De verdad quieres que te den la respuesta?