|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[C]strutture semplici
salve ragazzi
![]() sono sempre qui a rompere. Ho un problemino di questo tipo: Codice:
#include <stdio.h> #include <stdlib.h> #define MAXIMUS 255 struct file_richiesta { int Codice_Cliente[9]; } richiesta; /* struttura per file di richiesta con unico campo */ struct file_dati { int Codice_Sede[6]; /* File dati F24 */ int Codice_Cliente[9]; int Codice_Cliente[9]; int C_CodiceCliente[3]; int P_RichPag[12]; /* Sul modello F24 riportare solo le 6 cifre a destra */ char Causale[3]; double importo[18]; /*Espresso in centesimi di Euro */ } dati; /* fine file dati f24 */ struct dettaglio_premio { int Codice_Cliente[9]; int ID_record[3]; /* da inserire solo valori tra : 01 03 05 per anni 2000 2001 2002 */ double p_anticipatodip[19]; /* in centesimi di euro e il primo carattere rappresenta il segno */ double p_anticipatoart[19]; double p_regolazionedip[19]; double p_regolazioneart[19]; double p_gestionespec[19]; } premio; /* Fine Dettaglio Premio */ struct dettaglio_addizionale { int Codice_Cliente[9]; int ID_record[3]; /* da inserire solo valori tra 02 04 06 per anni 2000 2001 2002 */ double importo_totalepr[18]; /*in centesimi di euro */ double Misura_Addizionale[18]; double importo_dovuto[18]; double impadd_art[18]; /* addizionale art.181 */ double imp_totaledov[18]; } addizionale; int main() { FILE *fp; char nomefile[] = "\home\RaouL\Desktop\inail\inail.txt" ; int scelta; for ( ; ; ) { printf("\n1) Inserimento dati\n"); printf("\n2) Uscita Programma\n"); scanf("%d" &scelta); if( scelta < 1 || scelta > 2) printf("Scelta non valida!"); else if (scelta == 2) printf("Programma terminato con successo"); break; } } :syntax on ![]() Difatti, questo è il risultato di gcc: Codice:
gcc -Wall inail.c -o inail inail.c:13: error: duplicate member `Codice_Cliente'
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() Ultima modifica di RaouL_BennetH : 15-12-2004 alle 15:04. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
trovato l'errore
![]() E sono sempre un pirla atomico, effettivamente l'avevo dichiarata due volte dentro la stessa struttura!!
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
A pensarci bene, così come lo starei pensando questo programmino fa acqua da tutte le parti
![]() Vorrei invece farlo così: Mi creo un file strutture.c che contenga solo le strutture e poi il file main.c che invece si occupi di gestire gli input e la memorizzazione dei dati su un file. Sarebbe meglio così oppure è indifferente? Nel caso in cui sia meglio, mi dareste qualche chiarimento su come "legare" due files diversi fra loro nella compilazione? Thx. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
uhm.....
![]() sto provando ad inserire solo due dati e a scriverli nel file di testo ma... succede questo: se inserisco per int Codice_Cliente[9]; il valore 12345678 poi, nel file mi riporta non so perchè: 13657888 ?!? ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
allora, ho scovato due errori:
Codice:
fprintf(fp, "%d %d\n", richiesta.Codice_Cliente, dati.Codice_Scheda); Ok, però, mi funziona solo nel caso in cui io dichiari tale dato non come un array ma come una variabile singola; mi spiego meglio: Codice:
/* con questo codice non mi riconosce il numero inserito */ int codice_cliente[9] ; /* con questo codice me lo scrive correttamente */ int codice_cliente;
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
int foo[9] dichiara un array di 9 interi, non ha nulla a che vedere con le "cifre" che compongono il numero. "Carattere di fine riga" riguarda le stringhe, non i numeri.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() è vero, che pirla che sono ![]() Quindi, su variabili di tipo int, come si può limitare l'inuput da parte dell'utente? Cioè, io avrei bisogno che all'inserimento del valore di quella variabile, l'utente non possa immettere più di 8 cifre.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Immetti una stringa, fai i controlli che devi fare, e la converti in intero con atoi.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quindi, stavo pensando a questo:
Potrei trattare tutti i dati che vengono richiesti come char e poi convertirli? Se è conveniente, potrei anzichè creare millemila variabili di tipo char, creare un unico array tipo: char dati_richiesti[1000] e poi pensare come assegnare a dati_richiesti[1] il codice cliente (ad esempio), a dati_richiesti[2] l'importo e così via? e poi gestirli con un indice? (int i)
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Se per te è importante controllare dettagliatamente l'input, leggilo con fgets e poi fai tutto quello che devi fare.
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() volevo dire che, se al posto di fare: Codice:
char codice[10] char settore[10] char cognome[10] char nome[10] etcetera...... mi conveniva di più fare: char dati_generici[1000]
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:17.