Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Programmazione
 file
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 2

inf89
Utente giovane



Inserito il - 07/09/2011 : 18:15:02  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
salve ho creato un programma in c che mi legge un file di testo.txt con su siscritto nome cognome e numero di telefono...ora dovrei fare la ricerca per cognome,so che posso memorizzarlo nella struttura
chi mi spiega come memorizzare il file nella struttura?
chi mi scrive il codice con la spiegazione????oppure se sapete come fare la ricerca senza utilizzare la struttura???grazie

Premoli
Utente giovane



Inserito il - 07/09/2011 : 22:21:35  Mostra Profilo  Visita l'Homepage di Premoli Invia a Premoli un Messaggio Privato  Rispondi Quotando
Beh cosa non riesci a fare?

Non devi far altro che caricare i dati presenti nel file in memoria, a questo punto puoi procedere con la ricerca, puoi usare uno qualsiasi degli algoritmi di ricerca... non mi sembra troppo complicato dove ti blocchi?
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 08/09/2011 : 11:18:22  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
nn riesco a caricare il file nella struttura-mica mi puoi scrivere il codice?grazie
Torna all'inizio della Pagina

Premoli
Utente giovane



Inserito il - 08/09/2011 : 12:27:50  Mostra Profilo  Visita l'Homepage di Premoli Invia a Premoli un Messaggio Privato  Rispondi Quotando
Io potrei anche scriverti il codice ma tu cosa ci guadagneresti?

E' davvero una cosa semplice da fare si tratta solo di capire come funziona fscanf oppure fgets ecc.ecc... puoi usare la funzione che più ti conviene in base a come hai organizzato il file da cui devi leggere.

Provaci posta qualcosa e poi se non funziona vediamo dove sbagli...
prova a dare un'occhiata anche su questo sito:
http://digilander.libero.it/uzappi/C/librerie/funzioni/scanf.html
ci sono i prototipi delle funzioni che possono servirti, con qualche breve spiegazione...
Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 08/09/2011 : 15:24:39  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Beh più che altro ti serve semplicemente vedere dei piccolo tutorial riguardanti l'acquisizione di dati da file ( operazione effettuata mediante le funzioni fgets o fscanf, o nell'eventualità, sfruttando apposite funzioni create da te ) che puoi tranquillamente trovare cercando su google viste le caterve di casi simili al tuo che ci sono in giro per il web.
Per quanto riguarda invece la memorizzazione di suddetti dati in apposite strutture, non vi è nulla di diverso rispetto ad una semplice procedura di assegnazione dei valori ai vari campi della struttura ( ammesso che essi siano di tipo int, char, float o double, poichè nel caso di array di caratteri ( stringhe ), hai la necessita di utilizzare funzioni incluse nell'header "string.h" come strcpy o meglio ancora strncpy ).
Have a look [url=http://lmgtfy.com/?q=C+acquisizione+dati+da+file+]here[/url]
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 12:00:27  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
ho creato una struttura cosi di rubrica telefonica:
struct rubi{
char nome [20];
char cognome[20];
int numero;}rub;



per inserire o creato questa procedurA:
void inserimento(FILE *f) {

int i;
i=0;

while(!feof(f)){

fscanf(f,"%s,%s,%d\n",&rub.nome,&rub.cognome,&rub.numero);
i++;
}}


VORREI SAPERE SE E GIUSTA???GRAZIE
Torna all'inizio della Pagina

genius
dott. ing. cav. ...FN

Genio


Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi


Inserito il - 12/09/2011 : 12:49:52  Mostra Profilo  Visita l'Homepage di genius  Clicca per vedere l'indirizzo MSN di genius  Invia a genius un messaggio Yahoo! Invia a genius un Messaggio Privato  Rispondi Quotando
Sicuramente il numero di telefono non è un int, ma un array di char

"...e se non hai morale
e se non hai passione
se nessun dubbio ti assale
perché la sola ragione che ti interessa avere
è una ragione sociale
soprattutto se hai qualche dannata guerra da fare
non farla nel mio nome
non farla nel mio nome
che non hai mai domandato la mia autorizzazione
se ti difenderai non farlo nel mio nome
che non hai mai domandato la mia opinione..."

Un blog farlocco
Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 12/09/2011 : 13:15:05  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da genius

Sicuramente il numero di telefono non è un int, ma un array di char


Beh però genius non sarebbe tanto sbagliato adoperarlo, anche perchè non si è prefissato di fare qualche tipo di modifica al suddetto numero, volontà dalla quale scaturisce la necessità di adoperare un array di caratteri per modificare il tutto in maniera decisamente più agevole.
In ogni caso, visto che anche un numero di cellulare occuperebbe massimo 10 cifre, una variabile di tipo int sarebbe appropriata in questo contesto e per farti meglio capire cosa intendo, ti rimando alla documentazione ufficiale, nella quale puoi ben vedere come i signed int abbiano una capienza tale da poter supportare anche eventuali numeri di telefono.
http://www.cplusplus.com/doc/tutorial/variables/
Torna all'inizio della Pagina

genius
dott. ing. cav. ...FN

Genio


Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi


Inserito il - 12/09/2011 : 14:23:40  Mostra Profilo  Visita l'Homepage di genius  Clicca per vedere l'indirizzo MSN di genius  Invia a genius un messaggio Yahoo! Invia a genius un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da coma

Citazione:
Messaggio inserito da genius

Sicuramente il numero di telefono non è un int, ma un array di char


Beh però genius non sarebbe tanto sbagliato adoperarlo, anche perchè non si è prefissato di fare qualche tipo di modifica al suddetto numero, volontà dalla quale scaturisce la necessità di adoperare un array di caratteri per modificare il tutto in maniera decisamente più agevole.
In ogni caso, visto che anche un numero di cellulare occuperebbe massimo 10 cifre, una variabile di tipo int sarebbe appropriata in questo contesto e per farti meglio capire cosa intendo, ti rimando alla documentazione ufficiale, nella quale puoi ben vedere come i signed int abbiano una capienza tale da poter supportare anche eventuali numeri di telefono.
http://www.cplusplus.com/doc/tutorial/variables/



coma, ok la buona volontà, ok che primeggi sempre su tutti, ma prima di trattare da 'ignorante' le persone con cui interloquisci, cerca almeno di capire chi hai davanti.

I tipi numerici si usano solo e soltanto se vuoi rappresentare un numero e se su quel numero vuoi farci operazioni matematiche.

Ora se vuoi divertirti fai le seguenti prove:
prova a leggere da file questo numero di telefono 0801234567. Salvalo in un intero, e poi stampalo. Dimmi se quella che vedi è l'informazione che ti aspetti.

se ancora non sei convinto prova a piazzare in un int il numero internazionale: +390801234567.

Questo per dirti che non è una questione di capienza, ma di semantica. Il numero di telefono non è un numero 'matematico' ma una stringa di caratteri numerici.

Spero di essere stato più chiaro, e magari scusami se sono stato troppo duro all'inizio, ma non ho resistito :P

"...e se non hai morale
e se non hai passione
se nessun dubbio ti assale
perché la sola ragione che ti interessa avere
è una ragione sociale
soprattutto se hai qualche dannata guerra da fare
non farla nel mio nome
non farla nel mio nome
che non hai mai domandato la mia autorizzazione
se ti difenderai non farlo nel mio nome
che non hai mai domandato la mia opinione..."

Un blog farlocco
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 14:35:03  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
vorrei sapere se e giusto scrivere in questo modo per memorizzare il contenuto del file nella struttura...se no mi correggete il codice...grazie
Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 12/09/2011 : 16:49:25  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Guarda che non penso che abbia trattato da ignorante ne te, ne tantomeno inf89, anzi, ho cercato con la massima disponibilità di scrivere qualcosa di utile!
Ed in ogni caso ti rispondo con uno stralcio di codice che, nonostante ciò che tu dica sia corretto, dimostra che ciò che stavo asserendo precedentemente fosse assolutamente corretto.
have a look here -> http://pastebin.com/50E4DUaZ
@inf89 : perchè non ci mostri un codice identato come si deve e magari possibilmente caricato su un apposito sito di nopaste?
Non capisco per quale motivo tu utilizzi un contatore ( i++ ) però sostanzialmente il codice è corretto, a parte la questione del numero di telefono, in quanto, o dovresti adoperare come genius dice un array di caratteri oppure, come nel codice che ho realizzato, un long int!
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:01:28  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
o usato i ++,perche poi mi serve per fare la ricerca all'interno della struttura,e quindi usare 'i' per il ciclo for...
Torna all'inizio della Pagina

genius
dott. ing. cav. ...FN

Genio


Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi


Inserito il - 12/09/2011 : 17:02:19  Mostra Profilo  Visita l'Homepage di genius  Clicca per vedere l'indirizzo MSN di genius  Invia a genius un messaggio Yahoo! Invia a genius un Messaggio Privato  Rispondi Quotando
coma, l'hai letto quel codice? è ovvio che se usi un numero del tipo "3391234567" avrai un risultato corretto, ma ripeto, prova con 0801234567 o +393331234567.

A parte questo, rappresentare come int o long int un numero telefonico è sbagliato concettualmente. ;)

"...e se non hai morale
e se non hai passione
se nessun dubbio ti assale
perché la sola ragione che ti interessa avere
è una ragione sociale
soprattutto se hai qualche dannata guerra da fare
non farla nel mio nome
non farla nel mio nome
che non hai mai domandato la mia autorizzazione
se ti difenderai non farlo nel mio nome
che non hai mai domandato la mia opinione..."

Un blog farlocco
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:03:51  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
infatti il mio problema eera quello di fare la ricerca all'interno del file,e io pensavo di inserire tutto all'interno della struttura e poi ricerca al''interno della struttura...
vi chiedo un altra cosa,se nel caso nn voglio mettere tutto all'interno della struttura come faccio a fare la ricerca?
Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 12/09/2011 : 17:11:39  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da genius

coma, l'hai letto quel codice? è ovvio che se usi un numero del tipo "3391234567" avrai un risultato corretto, ma ripeto, prova con 0801234567 o +393331234567.

A parte questo, rappresentare come int o long int un numero telefonico è sbagliato concettualmente. ;)


Si hai ragione, poichè volendo generalizzare al massimo l'utilizzo che potrebbe farsi di questo programma andrebbe gestito appropriatamente qualsiasi tipo di numero telefonico e con un array di caratteri non si hanno problemi di alcun tipo! :)
Ti ringrazio, dopotutto non si smette mai di imparare ed inoltre spero che il mio modo di fare non venga interpretato come voglia di fare il gradasso, ma un semplice modo, in primis, di aiutare gli altri(nel nostro caso inf89) ed in secondo luogo, imparare qualcosa di nuovo confrontandomi con gente preparata come voi!!;)

@inf89 : continuo a non capire quale sia il problema! Devi fare una ricerca, adotta un algoritmo di ricerca che può essere di tipo sequenziale oppure dicotomica( ricerca binaria ).
Occhio però che, seguendo il consiglio di genius, ovvero di adoperare degli array di caratteri, dovresti utilizzare la funzione strcmp() per confrontare i numeri di telefono che hai memorizzato nella rubrica!
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:17:33  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
io ora metto il codice che ho creato senza ricerca ,vorrei sapere solo se e giusto ?
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:19:25  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct rubi{
char nome [20];
char cognome[20];
int numero;}rub;

void visua(FILE *f);
void inserimento(FILE *f);
int main(){

int a;
FILE *f;
int i;
f=fopen("rubrica.txt","r");
if(f==NULL){
printf("impossibile\n");
exit(0);}

visua(f);
fclose(f);


f=fopen("rubrica.txt","r");
if(f==NULL){
printf("impossibile\n");
exit(0);}

inserimento(f);
fclose(f);




system ("pause");
return(0);

}

void visua(FILE *f){

char c;
c=fgetc(f);
while(c!=EOF){

printf("%c",c);
c=fgetc(f);}
}


void inserimento(FILE *f) {

int i;
i=0;

while(!feof(f)){

fscanf(f,"%s,%s,%d\n",&rub.nome,&rub.cognome,&rub.numero);
i++;
}}






Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 12/09/2011 : 17:32:01  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Forse scritto così sarebbe leggermente più leggibile ma soprattutto ti darebbe la possibilità di trovare con maggiore facilità gli errori che hai commesso.
Per l'esattezza, hai nell'utilizzo della fscanf() la specifica delle variabili di tipo stringa che come ben sai sono degli array, quindi va rimosso l'amperstand per entrambe le stringhe e va unicamente lasciato per il numero di telefono che essendo una variabile normalissima va passata per indirizzo per poter modificare il suo valore!
http://pastebin.com/JKDEmVWE

Modificato da - coma in data 12/09/2011 17:32:34
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:38:33  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
ho commesso solo quello di errore?
Torna all'inizio della Pagina

inf89
Utente giovane



Inserito il - 12/09/2011 : 17:45:24  Mostra Profilo  Visita l'Homepage di inf89 Invia a inf89 un Messaggio Privato  Rispondi Quotando
cmq ora faccio la ricerca e posto,grazie peri il vostro aiuto
Torna all'inizio della Pagina

coma
Utente medio


Regione: Puglia
Prov.: Bari


Inserito il - 12/09/2011 : 17:46:16  Mostra Profilo  Visita l'Homepage di coma Invia a coma un Messaggio Privato  Rispondi Quotando
Scusami, ma quale sarebbe la funzione del prototipo inserimento()? Vorresti inserire dei valori nella tua struttura oppure prelevarli dal file? Perchè usando la funzione fscanf() non fai altro che acquisire dei dati dal file da te analizzato!
Torna all'inizio della Pagina
Pagina: di 2 Discussione Precedente Discussione Discussione Successiva  
Pagina Successiva
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,18 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000