Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2014, 15:16
Avatar de Drewermerc
Drewermerc
 
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Pregunta como sustituir la funcion fgets y gets en c

hola

bueno quisiera saber si me podria ayudar con este programa en c que es para validar si lo que se ingresa son numeros o letras y es que uso la funcion fgets(numero, 20, stdin); y solo funciona corectamente el programa si introdusco los 20 caracteres y si uso la funcion gets no me deja compilar gcc espero que me puedan ayudar este es el codigo.

2 ‪#‎include‬ <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <ctype.h>
6
7 int validar_num(char numero[50]);
8 int validar_cadena(char nombre[50]);
9
10 int main (void)
11 {
12 int sw;
13 char numero[50], nombre[50];
14
15 fflush(stdin);
16 printf("ingrese un numero: ");
17 fgets(numero, 50, stdin);
18
19 sw = validar_num(numero);
20 if (sw == 0)
21 {
22 printf("el numero es valido\n");
23 }
24 else
25 {
26 printf("el numero no es valido\n");
27 }
28
29 fflush(stdin);
30 printf("introduce un nombre\n");
31 fgets(nombre, 50, stdin);
32 sw = validar_cadena(nombre);
33 if (sw == 0)
34 {
35 printf("el nombre es correcto\n");
36 }
37 else
38 {
39 printf("el nombre es incorrecto\n");
40 }
41 return 0;
42 }
43
44 int validar_num(char numero[50])
45 {
46 int i = 0 , sw = 0, j ;
j = strlen(numero);
48 while (i<j && sw==0)
49 {
50 if (isdigit(numero[i]) !=0)
51 {
52 i ++;
53 }
54 else
55 {
56 sw = 1;
57 }
58 }
59 return 0;
60 }
61 int validar_cadena(char nombre[50])
62 {
63 int i = 0, sw = 0, j;
64 j = strlen(nombre);
65 while (i<j && sw == 0 )
66 {
67 if (isalpha(nombre[1]) != 0)
68 {
69 i++;
70
71 }
72 else
73 {
74 sw = 1;
75 }
76 }
77 return 0;
78 }

Última edición por Drewermerc; 16/02/2014 a las 15:38