-
Notifications
You must be signed in to change notification settings - Fork 0
/
ej1-5-1_ESCaracteres_copia_archivos-Ejercicio_1-6.c
58 lines (44 loc) · 1.75 KB
/
ej1-5-1_ESCaracteres_copia_archivos-Ejercicio_1-6.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* Ejemplo de la Sección 1.5 Entrada y salida de caracteres
1.5.1 Copia de archivos
Ejercicio 1-6
del Libro del Lenguaje de Programación C, pag. 18
El ejemplo más sencillo es un programa que copia la entrada en la salida,
de a un caracter a la vez puede escribirse de modo más conciso.
En Lenguaje C, cualquier asignación, tal como
c = getchar()
es una expresión y tiene un valor, el del lado izquierdo
luego de la asignación. Esto significa que una asignación
puede aparecer como parte de una expresión más larga.
La asignación de un caracter a la variable entera c
la colocamos dentro de la sección de prueba del ciclo while,
así solo hay una referencia a la función getchar() de stdio.h
y se reduce el código fuente del programa.
Los paréntesis que están
( c = getchar() )
son necesarios porque la precedencia del operador de comparación !=
es más alta que la del operador de asignación de variable =
lo que significa que en ausencia de estos paréntesis
la operación de comparación != se realizaría antes de
la operación de asignación de variable =
De esta manera, la proposición
c = getchar() != EOF
es equivalente a
c = ( getchar() != EOF )
y tiene el efecto indeseable de hacer que c sea 0 o 1
dependiendo de si la llamada a getchar() encontró EOF
En este ejercicio se verifica si la expresión getchar() != EOF es 0 o 1
*/
#include <stdio.h>
main()
{
int c;
//c = getchar();
// != operador de comparación "no igual a" "distinto de"
//while ( ( c = getchar() ) != EOF )
while ( c = ( getchar() != EOF ) )
{
//putchar(c); No se llega a inicializar la variable entera c
printf("\nLa expresión getchar() != EOF vale: %d \n", c);
//c = getchar();
}
}