Ciao,
avrei bisogno di un aiuto sul seguente pezzo di codice scritto in C
In dettaglio, al momento dell'esecuzione in alcuni casi essa termina senza alcun problema, in altri si interrompe. Purtroppo non riesco a capirne quando il motivo? Qualcuno potrebbe cortesemente dargli un'occhiata ed aiutarmi. Grazie :-)codice:#include <iostream> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <stdint.h> typedef struct { char counterName[15]; char bufferName[15]; char resetName[15]; }historyParams; #define OK 0 #define ERROR -1 #define MAX_SIZE 2048 #define configureParams(historyParams) \ { \ strncpy(historyParams.counterName,"Nome Counter",sizeof(historyParams.counterName)); \ strncpy(historyParams.bufferName,"Nome Buffer",sizeof(historyParams.bufferName)); \ strncpy(historyParams.resetName,"Nome Reset",sizeof(historyParams.resetName)); \ } int f(historyParams * histParams) { historyParams * lscptr_histParams = NULL; size_t maxNByte = sizeof(historyParams)/sizeof(lscptr_histParams); size_t nStruct = MAX_SIZE/maxNByte; if(!histParams) //Funziona se puntatore e' NULL { printf("Input Parameter 'history_params' is NULL!"); /*Errore: puntatore e' NULL*/ return ERROR; } unsigned int i = 0; do { lscptr_histParams = histParams; memcpy(lscptr_histParams[i].bufferName, histParams->bufferName, sizeof(histParams->bufferName)); printf("lscptr_histParams[%d].bufferName = %s\n\n",i,lscptr_histParams[i].bufferName); i++; memset(&lscptr_histParams[i], '\0', sizeof(historyParams)); printf("i = %d\n",i); if(i==nStruct) { break; } lscptr_histParams++; } while(lscptr_histParams); return OK; } int main() { int esito = 0; historyParams * lHistParams = NULL; historyParams varHistParams; configureParams(varHistParams); lHistParams = &varHistParams; esito = f(lHistParams); if(esito == 0) { printf("!!!Hello World!!!\n"); } return 0; }

Rispondi quotando

