Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    10

    [C] Stampa di una struttura

    Salve,
    ho un programma C con una struttura complessa con dati misti.
    Volevo sapere se c'è un modo per stampare la struttura nel suo complesso, come se fosse una stringa unica.

    Vorrei comparare byte x byte la struttura prodotta da 2 programmi differenti, in quanto se stampo i singoli elementi sono uguali però alla fine ottengo risultati diversi.

    Grazie

    Ciao

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Con una funzione ad hoc.
    L'operatore == confronta byte a byte. Se hai un puntatore alla struttura puoi fare (*pa) == (*pb) oppure usare memcmp.
    Una nota, se sono contenuti puntatori all'interno di tale struttura quasi certamente non vorrai comparare le due strutture byte a byte in quanto risulterebbero uguali SOLO nel caso i puntatori puntassero ALLA STESSA AREA DI MEMORIA.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    10
    Ciao,
    io però vorrei stampare byte a byte la struttura in quanto non posso fare il confronto in quanto sono su 2 programmi differenti
    Nella struttura non ci sono puntatori ma solo dati
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Non puoi salvare la struttura in un file binario?
    Altrimenti puoi codificarla in base64
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    10
    Ciao,
    ho stampato le aree usando questa funzione:
    for(int i=0; i<parms->haa_uxpr_array_elements; i++)
    à
    int *ptr = &nodeÝi¨;
    printf(">");
    for(int j=0; j<50; j++)
    à
    printf("%.1x", *ptr);
    ptr ++;
    è
    printf("<çn");
    è
    Ed effettivamenre un piccola differenza fra le due strutture l'ho trovata.
    Però non capisco una cosa
    La prima parte della struttuta è così definita
    typedef struct pregen_node_sà
    int pregen_bwd;
    /* Internal use only (linklist) */
    int pregen_fwd;
    /* Internal use only (linklist) */
    unsigned char pregen_ptrÝ8¨;
    /* Internal use only (struct ptr) */
    unsigned char pregen_type;
    /* J-Job, S-Step, O-Object */
    unsigned char _filler1Ý3¨;
    int pregen_job_seq;
    int pregen_step_seq;
    int pregen_obj_seq;
    int pregen_obj_seq2;
    union à
    .....
    visualizzando i dati con la mia funzione vedo questi dati
    >22c291c822c296b0482b568e20000001100d9c5c7f0f0f1f0f1300c50000000000
    e il valore di pregen_ptr è 482b568
    metre se faccio una printf
    printf("ptr -> %x çn", node->pregen_ptr);
    ottengo questo valore 22c29444
    Perchè???
    Lavoro sotto host quindi alcuni caratteri non corrispondono!
    Ultima modifica di foxes; 17-10-2014 a 10:00

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Supponendo un char 8 bit i valori variano al massimo da 0 a FF, come puoi ottenere più di due caratteri?
    Sta di fatto che quel codice è illeggibile.
    Ci sono funzioni già scritte per base64, perché ti devi complicare la vita con printf?
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.