|
|||||||
|
|
|
![]() |
|
|
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 16: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: 02:15.






















