|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
ti sto per mandare il codice appena lo provo
|
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Quote:
Mi puoi dire che errore ti da sulla malloc ? Inoltre hai pensato ad aggiungere gli header file necessari <stdlib.h> e <stdio.h> ? Magari togli dal listato che ho postato la (char *) che compare prima di ogni malloc.
__________________
MICROSOFT : Violating your privacy is our priority |
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Eccolo, a me funzia.
Codice:
#include <stdio.h>
#include <string.h>
struct persona {
char * nome;
char * cognome;
char * via;
char * citta;
char * telefono;
};
main ()
{
struct persona dati[10];
char Input [256];
int i;
for (i=0; i< 10; i++) {
printf ("Nome: "); gets (Input);
dati [i].nome = strdup (Input);
printf ("Cognome: "); gets (Input);
dati [i].cognome = strdup (Input);
printf ("Via: "); gets (Input);
dati [i].via = strdup (Input);
printf ("Citta': "); gets (Input);
dati [i].citta = strdup (Input);
printf ("Telefono': "); gets (Input);
}
for (i=0; i< 10; i++) {
printf ("Nome: %s\n", dati [i].nome);
printf ("Cognome: %s\n", dati [i].cognome);
printf ("Via: %s\n", dati [i].via);
printf ("Citta': %s\n", dati [i].citta);
printf ("Telefono: %s\n", dati [i].telefono);
}
return (0);
}
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
PERFETTO FPUCCI!!! TI RIGRAZIO TANTISSIMO FUNZIONA PERFETTAMENTE!!!
Mi spiegheresti il perchè di alcune cosette??? char Input [256]; ???? printf ("Nome: "); gets (Input); ??? dati [i].nome = strdup (Input); ??? perchè usi gets(input) ??? cosè la funzione strdup???
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
#26 | ||
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
Se il più grande dei tuoi input (ad esemio 'indirizzo' fosse di 50 caratteri, allora puoi fare: char Input [51]; (ricordati sempre di lasciare un carattere in più per il terminatore di stringa) Quote:
gets() è una funzione che ti permette di acqusire un testo da tastiera fino a che non premi il tasto "ENTER". Più correttamente, la funzione accetta l'imput da tastiera fino a chge non rileva il carattere CR (Carriage Return) = codice 10 della tabella ASCII. la strdup() è equivalente a usare la malloc()+strcpy() (o la memcpy()) con sensibile risparmio di codice. L'unica limitazione è che òla puoi usare solo su stringhe. Infatti la strdup() alloca X byte (tramite malloc()) in base alla lunghezza della stringa che le viene passata (X=strlen(stringa_passata)). [quote] Spero di essere stato chiaro, altrimenti chiedimi pure altreinfo. Bye |
||
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
ORA DEVO OCCUPARMI DELLA RICERCA ALL'INTERNO DELLA MATRICE
printf ("Inserire i dati da cercare all'interno del programma\n"); gets (Input); for (i=0;i<n;i++) { if (strcmp (dati [i].nome && dati [i].cognome && dati [i].indirizzo && dati [i].citta , Input) > 0) { printf ("Nome: %s\n", dati [i].nome); printf ("Cognome: %s\n", dati [i].cognome); printf ("Indirizzo: %s\n", dati [i].indirizzo); printf ("Citta: %s\n", dati [i].citta); } else { printf ("Nessun dato trovato\n"); } } Ovviamente non mi funziona !!!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
L'ordinamento su quale chiave lo devi fare? Se la chiave è il campo 'nome', questo non può essere un valore nullo e quindi farai: Codice:
if ( dati [i].nome [0] == 0) {
printf ("Valore errato\n")
...
}
Codice:
for (i=0; i<10; i++) {
if (strcmp (dati [i].nome, ValoreDiConfronto) <= 0) {
/* l'elemento dati [i].nome è minore o uguale */
[...]
} else {
/* l'elemento dati [i].nome è maggiore */
[...]
}
}
Eppoi devi scegiere quale algoritmo di sorting vuoi utilizzare, ed implementare quello. |
|
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
la ricerca deve essere fatta su tutti i campi
nome cognome indirizzo citta mi conviene usare uno switch?!?!?
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
Devi usare un mega-if: if (strcmp (dati [i].nome, NomeDiConfronto) == 0 && strcmp (dati [i].conome, CogomeDiConfronto) == 0 && strcmp (dati [i].via, ViaDiConfronto) == 0 && strcmp (dati [i].citta, CittaiConfronto) == 0 && strcmp (dati [i].telefono, TelefonoDiConfronto) == 0) { /* Ok, lo hai trovato */ } else { /* Ok, NON lo hai trovato */ } |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:19.



















