Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2020, 23:39
__SDP__
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
validar un miembro de una estructura en c

Hola,

Estoy intentando validar un char de 100 elementos y esta dentro de la estructura,

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_LIBROS 10
  5.  
  6. struct libro{
  7.     int codigo;
  8.     char titulo[100];
  9.     int anio;
  10. };
  11.  
  12. struct libreria{
  13.     int numero;
  14.     char nombre[100];
  15.     char telefono[30];
  16.     struct libro reg_libro[MAX_LIBROS];
  17. };
  18.  
  19. void mostrarResultados(struct libreria l[]);
  20.  
  21. int main() {
  22.    
  23.  
  24.    
  25.     struct libreria listadoL[2];
  26.    
  27.     listadoL[0].numero = 200;
  28.     strcpy(listadoL[0].nombre, "Antartica");
  29.     strcpy(listadoL[0].telefono, "56973567762");
  30.    
  31.     //Libro 1
  32.    
  33.     listadoL[0].reg_libro[0].codigo = rand();
  34.     strcpy(listadoL[0].reg_libro[0].titulo, "Harry Potter, La Piedra Filosofal");
  35.     listadoL[0].reg_libro[0].anio = 2001;
  36.    
  37.     //Libro 2
  38.    
  39.     listadoL[0].reg_libro[1].codigo = rand();
  40.     strcpy(listadoL[0].reg_libro[1].titulo, "Harry Potter, La camara secreta");
  41.     listadoL[0].reg_libro[1].anio = 2001;
  42.    
  43.    
  44.    
  45.     puts("=== MOSTRAR RESULTADOS ===");
  46.     mostrarResultados(listadoL);
  47.    
  48.     return (EXIT_SUCCESS);
  49. }
  50.  
  51. void mostrarResultados(struct libreria l[]){
  52.    
  53.     for(int x=0; x<2; x++){
  54.         printf("\nlargo: %d\n", strlen(l[x].nombre));
  55.         if(l[x].nombre != NULL){
  56.             printf("\nLibreria: %s", l[x].nombre);
  57.             printf("\nTelefono: %s\n", l[x].telefono);
  58.  
  59.             for(int i=0; i<2; i++){
  60.                 printf("\nCodigo Libro: %d", l[x].reg_libro[i].codigo);
  61.                 printf("\nTitulo: %s", l[x].reg_libro[i].titulo);
  62.  
  63.                 printf("\n");
  64.             }
  65.         }
  66.  
  67.     }
  68. }

pero me dice que tiene 2 de largo y no deberia tener nada nose como validarlo ya que no viene como nulo o vacio o undefined o cualquier cosa que me diga que no tiene nada.

Aqui esta lo que devuelve
Código C:
Ver original
  1. === MOSTRAR RESULTADOS ===
  2.  
  3. largo: 9
  4.  
  5. Libreria: Antartica
  6. Telefono: 56973567762
  7.  
  8. Codigo Libro: 1804289383
  9. Titulo: Harry Potter, La Piedra Filosofal
  10.  
  11. Codigo Libro: 846930886
  12. Titulo: Harry Potter, La camara secreta
  13.  
  14. largo: 2
  15.  
  16. Libreria: &#65533;
  17. Telefono: &#65533;h���
  18.  
  19. Codigo Libro: 974762479
  20. Titulo: &#65533;
  21.  
  22. Codigo Libro: 32764
  23. Titulo: &#65533;��9�
  24.  
  25. RUN FINISHED; exit value 0; real time: 0ms; user: 0ms; system: 0ms

por el momento seguiré intentando, ojala me ayuden
y gracias