samsung - mejor formato para escanear documentos
Diferencia entre diferentes formatos de escaneo (2)
Esta pregunta ya tiene una respuesta aquí:
- espacios en blanco en el formato cadena (scanf) 4 respuestas
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
%domite el espacio principal - B,
%d-%d-%des bastante estricto, lee un entero después de exactamente-y luego otro entero, y así sucesivamente, por lo que lee1-2-3bien,1- 2- 3también, pero falla en1 - 2 - 3. Mientras que, por otro lado,%d -%d -%dprimero 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
%fomite 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, on. C11 §7.21.6.2 8
B , C , D diferencias?
Pase el mouse sobre la sugerencia 1:
Un
" "antes de un especificadorscanf(), 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?