Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-12-2004, 16:00   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
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
Come vedete, ci sono quattro strutture, che servono a contenere determinati dati. Ora, mi era parso di capire che in strutture diverse fra di loro, potevo anche dichiarare delle variabili con lo stesso nome, ma a quanto pare, non devo aver capito bene

Difatti, questo è il risultato di gcc:

Codice:
  gcc -Wall inail.c -o inail
inail.c:13: error: duplicate member `Codice_Cliente'
Come mai?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 15-12-2004 alle 16:04.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 16:02   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
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
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 16:33   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
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
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 16:53   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
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
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 17:25   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
allora, ho scovato due errori:

Codice:
fprintf(fp, "%d %d\n", richiesta.Codice_Cliente, dati.Codice_Scheda);
andava senza l'operatore "&" davanti ai dati delle strutture.

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;
a me serviva limitare l'ampiezza di tale campo perchè si possono inserire solo fino ad 8 cifre, oer questo avevo dichiarato l'array di 9 elementi, considerando il carattere null di fine riga. Mi potreste chiarire un pò le idee?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 17:29   #6
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da RaouL_BennetH
a me serviva limitare l'ampiezza di tale campo perchè si possono inserire solo fino ad 8 cifre, oer questo avevo dichiarato l'array di 9 elementi, considerando il carattere null di fine riga. Mi potreste chiarire un pò le idee?
....?
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2004, 17:34   #7
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da ilsensine
....?
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.


è 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
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2004, 10:13   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2004, 14:18   #9
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
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
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2004, 17:23   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
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:
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?
...?
__________________
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 25-12-2004, 15:27   #11
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da ilsensine

...?
Hai ragione, mi sono spiegato malissimo

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]
ed utilizzare poi i singoli elementi di dati_generici per memorizzare i vari valori.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Oracle NetSuite si potenzia con nuove fu...
Musica generata con l'IA: Sony lavora a ...
Cyberpunk 2077 in versione PC su smartph...
BYD si gioca un grosso jolly: pronta Rac...
Samsung annuncia l'arrivo in Italia dei ...
Offerta lancio Pixel 10a: come ottenere ...
Google presenta Pixel 10a: poche le novi...
Caos F1 2026: 14 monoposto senza omologa...
Tesla festeggia il primo Cybercab prodot...
Desktop piccolo e potente? NZXT H2 Flow ...
Polestar spinge sull'acceleratore: arriv...
Nuovo record mondiale nel fotovoltaico: ...
L'ultimo baluardo cade: fine supporto pe...
'Il mondo non ha mai visto nulla di simi...
La Commissione europea mette sotto indag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v