Ver Mensaje Individual
  #12 (permalink)  
Antiguo 17/02/2014, 23:56
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: como sustituir la funcion fgets y gets en c

Código C:
Ver original
  1. #include <stdio.h>
  2. void print_char(char cadena[100]);
  3.  
  4. int main(){
  5.     char cadena[100]={'\0'}; //De esta forma limpias el buffer antes de usar
  6.     print_char( cadena );
  7. }
  8.  
  9. void print_char( char cadena[100] ){
  10.     int i = 0;  
  11.     while (i<100){
  12.         printf("cadena[%2d] = '%c'\n",i,cadena[i] );
  13.         i++;
  14.     }
  15. }

Así puedes limpiar el buffer.

Pero lo que te quiero decir es que la funcion isalpha() te retorna un valor verdadero CASO el valor sea a,b,c,d...
de lo contrario te va devolver nulo, y el '\0' no es una letra.
¿Que vas hacer si van mezcladas en este caso?
En todo caso tendrias que saber cuantas letras debes mirar.
Si por ejemplo quieres mirar la palabra "Hola" son solo 4 letras, si miras la 5º letra ahi estara la '\0' que te va tirar error ¿comprendes?

Eso se puede hacer asi:

while ( cadena[i] != '\0' )

Código C:
Ver original
  1. #include <stdio.h>
  2. void print_char(char cadena[100]);
  3.  
  4. int main(){
  5.     char cadena[100]= "hola";
  6.     print_char( cadena );
  7.    
  8. }
  9.  
  10. void print_char( char cadena[100] ){
  11.     int i = 0;
  12.    
  13.     //Mientras no aya NULL hacer las comparaciones necesarias  
  14.     while ( cadena[i] != '\0' ){
  15.         printf("cadena[%2d] = '%c'\n",i,cadena[i] );
  16.         i++;
  17.     }
  18. }

En este caso no hace falta inicializar ya que sabemos que la primera letra después de la palabra sera siempre el dichoso null que dice que no vamos utilizar esos 100 espacios.
Pero recuerda que inicializar una variable es muy buena practica y te puede evitar mas de un dolor de cabeza.
Si tienes problemas imprime las tablas una y otra vez para ver por que tienes problemas.

Aquí te explica como puedes limpiar la memoria antes de usar.
Esta un función muy interesante llamada memset() y un par de sistemas mas ;)
http://funcion-linkgl.blogspot.com.e...e-memoria.html

Última edición por vangodp; 18/02/2014 a las 00:04