Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    programmino in c

    Ciao,
    avrei bisogno di un aiuto sul seguente pezzo di codice scritto in C

    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;
    }
    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 :-)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Leggi il Regolamento interno. Ci sono un po' di regole da seguire quando si apre una nuova discussione.

    In particolare:

    1) Il titolo deve essere significativo. "Programmino in c" può andar bene per un'infinità di problematiche

    2) Il codice va postato usando gli appositi tag CODE, in modo da renderlo leggibile

    3) E' necessario riportare eventuali messaggi di errore ricevuti in esecuzione/compilazione


    Sistemo la discussione, in futuro pensaci tu.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2026 vBulletin Solutions, Inc. All rights reserved.