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

Código C:
Ver original
  1. //NULL_XRAY.c
  2. #include <stdio.h>
  3.  
  4. void isaNULL(char cadena[100] );
  5. void imprimenulo( char cadena[100] );
  6. void imprimea_asc2( char cadena[100] );
  7. int main(){
  8.     char cadena[100] = "prueba texto";
  9.     isaNULL(cadena);
  10.     printf("Imprimimos como chars, no se veran nulos\n");
  11.     imprimenulo(cadena);
  12.     printf("Imprimimos como caracteres de la tabla asc2 para poder ver los ceros\n");
  13.     imprimea_asc2( cadena );
  14. }
  15.  
  16. void isaNULL(char cadena[100] ){
  17.     int i = 0;  
  18.     while (cadena[i]){
  19.         printf("%c",cadena[i] );
  20.         i++;
  21.         //Esto imprime todas las letas
  22.     }
  23.    
  24.     printf("\nDespues de la ultima letra '%c' hay '%i' segun la tabla asc2 \n\n",cadena[i-1],cadena[i] );
  25.     printf("Si hay un nulo al final y lo imprimes como char no te aparece: '%c'<---Lo ves?\n",cadena[i] );
  26. }
  27.  
  28. void imprimenulo( char cadena[100] ){
  29.     int i = 0;  
  30.     while (i<100){
  31.         printf("cadena[%2d] = '%c'\n",i,cadena[i] );
  32.         i++;
  33.     }
  34. }
  35. void imprimea_asc2( char cadena[100] ){
  36.     int i = 0;  
  37.     while (i<100){
  38.         printf("cadena[%2d] = '%i'\n",i,cadena[i] );
  39.         i++;
  40.     }
  41. }
Este programa te hace de chivato, puedes usar las funciones para ver lo que hay en tu código.
Si hay un cero y estas queriendo validar letras eso puede ser la causa de tu error.
NULL es un carácter no imprimible, puedes ver en la tabla asc2.
Espero que con esto puedas arreglarlo.
Una idea seria validar esos datos por la tabla asc2 ;)