|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 96
|
[c] operazioni tra float e int, possibili???
dovrei moltiplicare un float per un int, è possibile fare ciò???
es. numcopie è int, mentre *****.prezzo sono float. registro[0].prezzo = articolo[0].prezzo * numcopie; con questo comando non funziona, cè un modo??? Ultima modifica di fenix576 : 19-07-2010 alle 16:06. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 96
|
visto che mi ci trovo chiedo anche un ultima cosa:
nell' archivio che sto facendo (gestito con struct di stringhe) vorrei far apparire la scritta "l'archivio è vuoto" se facendo un controllo, isultasse che un campo dell'articolo in posizione 0 risultasse vuoto. esempio: se articolo[0].nome == 'vuoto', stampa l'archivio è vuoto. al posto di vuoto cosa dovrei metterci? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1629
|
penso tu debba fare un cast...
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
|
Dipende da come hai implementato la tua stringa. Se è implementata come un puntatore, allora semplicemente potresti vare
if (articolo[0].nome == null) Errore. Oppure potresti tenere un contatore delle posizioni occupate, o alla prima libera e quindi ti basterebbe un controllo sul suo valore. Cosa intendi con "con questo comando non funziona"? Dà errore o produce risultati errati? |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Nov 2007
Messaggi: 96
|
Quote:
cmq if (articolo[0].band == 'null') printf("L'INVENTARIO E' VUOTO\n"); non funziona senza le ' ' manco, 'NULL' manco. non come fare a controllare se la stringa è vuota. |
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
|
Quote:
Mi sa che il problema è più profondo. Come è fatta la tua struttura articolo? Cerco di spiegarti: In C le stringhe sono rappresentate da vettori di caratteri terminati dal carattere nullo. Inoltre in C, vettori e puntatori sono, per così dire, intercambiabili e infatti di norma si utilizzano vettori allocati dinamicamente per memorizzare le stringhe. Ad esempio la tua struttura potrebbe essere così definita (perdona gli errori del linguaggio ma è da un po' che non lo uso) Codice:
struct Articolo {
char * nome;
}
Codice:
for (i = 0; i < MAX; i++) articolo[i].nome = NULL; infine per riepire i nomi, supponendo di leggere i dati e di salvarli in un vettore di char chiamato stringaLetta basterebbe fare Codice:
articolo[i].nome = strdup(stringaLetta); |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 96
|
in pratica ho definito prima le stringhe con
typedef char string[200]; e poi cè lo struct con typedef struct { string band; string album; etc } articolo ho una funzione che riempie a ogni ciclo l'archivio con i dati: a partire dall'inidce a 0. non ho ben capito come implementare il codice da te consigliato. |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
|
Il tuo codice ha uno spreco abbastanza grande di risorse, inoltre non permette grandi controlli.
Una soluzione a cui non avevo pensato è quella di usare la funzione strlen, a patto che tu riempi le stringhe con il carattere di terminazione se sono vuote. Altrimenti potresti passare ad un'allocazione di tipo dinamico typedef struct { char* dato1; char* dato2; } articolo; Ti conviene fare un primo ciclo del tipo for (i =0; i < MAX; i++) articolo[i].dato1 = NULL; articolo[i].dato2 = NULL; A quel punto potrai riempire le stringhe attraverso la funzion strdup. che ti ho consigliato prima. Visto che i dati sono stati inizializzati a NULL avrai modo di controllare se é pieno o meno. Ultima modifica di Isildur84 : 19-07-2010 alle 22:08. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:32.




















