[c] - problema con costruttori e puntatori

di il
2 risposte

[c] - problema con costruttori e puntatori

Ho un problema con questa porzione di codice. Non riesco ad inserire il nome del dirigente perchè mi da errore subito! non capisco se sbaglio nella scanf oppure se sbaglio da qualche altra parte! aiuto
#include <stdio.h>
#define MAX_STR 20
#define MAX 200
#define MAX_MAN 10
typedef enum{dirigenti, impiegati, operai
}lavoratori;

typedef struct{
	char nome[MAX_STR];
	char cognome[MAX_STR];
	int stipendio;
	lavoratori categoria;
}DatiLavoratore;


        int main(){
	DatiLavoratore DatiLavoratori[MAX];
	DatiLavoratore *Management[MAX_MAN];
	int scelta, cont=0, i=0, contm=0;
	
	printf("Scegliere categoria lavoratore (0-dirigenti, 1-impiegati, 2-operai)\n");
	scanf("%d", &scelta);
	while(cont<MAX){
		if(scelta==0){
			printf("Inserire nome\n");
			while(i<MAX_STR){
				scanf("%c", Management[contm]->nome[i]);
				i++;
			}
			i=0;
			printf("Inserire cognome\n");
			while(i<MAX_STR){
				scanf(" %c", Management[contm]->cognome[i]);
				i++;
			}
			i=0;
			printf("Inserire stipendio\n");
			scanf("%d", Management[contm]->stipendio);
			Management[contm]->categoria=dirigenti;
			contm++;
		}
}

2 Risposte

  • Re: [c] - problema con costruttori e puntatori

    Primo) l'input di una stringa si fa con %s e non con %c

    Secondo) non puoi usare i puntatori senza avere allocato lo spazio per le singole strutture
  • Re: [c] - problema con costruttori e puntatori

    Innanzitutto grazie per l'attenzione
    per la prima considerazione inizialmente ero con %s ma successivamente ho cambiato per tentativi
    per la seconda.. posso chiedere un ulteriore chiarimento che non ho capito? si fa con malloc? però per l'esercizio in cui sono arrivato seguendo il libro non è stato ancora menzionato! c'è un'altro modo?

    AGGIORNAMENTO
    Ho capito che l'esercizio non chiedeva la prima parte di lettura dei dati e quindi immagino che serva questo malloc. Posso avere una conferma?
Devi accedere o registrarti per scrivere nel forum
2 risposte