-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata_read.c
179 lines (132 loc) · 5.18 KB
/
data_read.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/**CFile***********************************************************************
Fichero [data_read.c]
Resumen [Fichero para introducir datos por teclado.]
Autor [100317575, 100307091, 100317556, 100318675, 100291133]
Copyright [Copyright (c) 2012 Universidad Carlos III de Madrid
Se concede, sin necesidad de acuerdo por escrito y sin ningún tipo de derechos
de autor, permiso para utilizar, copiar, modificar y distribuir este programa
y su documentación para cualquier propósito siempre y cuando esta advertencia
y los siguientes dos párrafos aparezcan en las copias.
EN NINGÚN CASO SE RECONOCERÁ A LA UNIVERSIDAD CARLOS III DE MADRID RESPONSABLE
DIRECTA, INDIRECTA, ESPECIAL, O SUBSIDIARIA DE LOS POSIBLES DAÑOS Y PERJUICIOS
QUE PUEDAN DERIVARSE DEL USO DE ESTE PROGRAMA Y DE SU DOCUMENTACIÓN, INCLUSO
EN EL CASO DE QUE LA UNIVERSIDAD CARLOS III DE MADRID HAYA SIDO ADVERTIDA DE
TALES DAÑOS Y PERJUICIOS.
LA UNIVERSIDAD CARLOS III DE MADRID ESPECÍFICAMENTE SE DESENTIENDE DE TODO
TIPO DE GARANTÍAS INCLUYENDO, PERO NO LIMITANDOLAS A, LAS GARANTIAS IMPLÍCITAS
DE LA COMERCIALIZACIÓN Y ADECUACIÓN PARA CUALQUIER PROPÓSITO EN PARTICULAR. EL
PROGRAMA SE PROVEE TAL CUAL Y LA UNIVERSIDAD CARLOS III DE MADRID NO TIENE
OBLIGACIÓN ALGUNA DE OFRECER MANTENIMIENTO, SOPORTE, ACTUALIZACIONES, MEJORAS
O MODIFICACIONES.]
******************************************************************************/
#include "data_read.h"
/*---------------------------------------------------------------------------*/
/* Definición de las funciones */
/*---------------------------------------------------------------------------*/
/**Función********************************************************************
Resumen Lee números enteros. En caso de introducir CTRL-D se cierra el programa.
Parámetros @return data Devuelve el número entero introducido.
Efec. Colat. Que el usuario introduzca erróneamente el dato.
******************************************************************************/
long menu_read(){
BEGINF(menu_read, 100317575, 100307091, 100317556, 100307091)
long data;
ssize_t bytes_leidos;
size_t numero_bytes;
char *string;
numero_bytes = 0;
string = NULL;
bytes_leidos = getline(&string, &numero_bytes, stdin);
if (bytes_leidos == -1)
{
printf("\n");
data = -1;
}
else
{
string[strlen(string)-1]= '\0';
data = strtol(string, NULL, 10);
}
free(string);
return data;
ENDF(menu_read)
}
/**Función********************************************************************
Resumen Lee números enteros.
Parámetros @return data Devuelve el número entero introducido.
Efec. Colat. Que el usuario introduzca erróneamente el dato.
******************************************************************************/
long int_read(){
BEGINF(int_read, 100307091, 100291133, 100318675, 100291133)
long data;
ssize_t bytes_leidos;
size_t numero_bytes;
char *string;
numero_bytes = 0;
string = NULL;
bytes_leidos = getline(&string, &numero_bytes, stdin);
if (bytes_leidos == -1)
{
puts(ERRDATO);
}
else
{
string[strlen(string)-1]= '\0';
data = strtol(string, NULL, 10);
}
free(string);
return data;
ENDF(int_read)
}
/**Función********************************************************************
Resumen Lee un número decimal.
Parámetros @return data Devuelve el número decimal introducido.
Efec. Colat. Que el usuario introduzca erróneamente el dato.
******************************************************************************/
float float_read() {
BEGINF(float_read, 100318675, 100317575, 100317556, 100317575)
float data;
ssize_t bytes_leidos;
size_t numero_bytes;
char *string;
numero_bytes = 0;
string = NULL;
bytes_leidos = getline(&string, &numero_bytes, stdin);
if (bytes_leidos == -1)
{
puts(ERRDATO);
}
else
{
string[strlen(string)-1]= '\0';
data = strtof(string, NULL);
}
free(string);
return data;
ENDF(float_read)
}
/**Función********************************************************************
Resumen Lee un String introducido por teclado.
Parámetros @return string Devuelve el string introducido.
Efec. Colat. Fuga de memoria si no se libera el string.
Que el usuario introduzca erróneamente el dato.
******************************************************************************/
char* string_read(){
BEGINF(string_read, 100317556, 100318675, 100291133, 100318675)
ssize_t bytes_leidos;
size_t numero_bytes;
char *string;
numero_bytes = 0;
string = NULL;
bytes_leidos = getline(&string, &numero_bytes, stdin);
if (bytes_leidos == -1)
{
puts(ERRDATO);
}
else
{
string[strlen(string)-1]= '\0';
}
return string;
ENDF(string_read)
}