Newsgroup: it.arti.musica.strumenti.chitarra
Titolo: [OT] APRI SOLO SE TI INTERESSA IL C

Allora, siccome ho imprecato per dieci minuti buoni, alla fine mi sono
accorto della puttanata.
Insomma, un codicino per ripassare i flussi binari, uno lo compila
e si accorge di una cosa bastarda!
O meglio, il listato non da errore, solo che si verifica un effetto
"caruccio"
se si manda in esecuzione questo listato che state per vedere.
Se a qualcuno interessa scoprire dov'è la bastardissima infidia!
Ciao!
***************************************************
#include<cstdio>
#include<cstdlib>
struct record{
char nome[20];
char cognome[20];
};
main(){
struct record *vettore[3];
struct record *vettore2[3];
int i, quanti;
FILE *file1;
/* lettura degli elementi da tastiera */
for(i=0;i<3;i++){
vettore[i] = (struct record *)malloc(sizeof(struct record));
printf("\nInserisci il mnome %d : ",i);
gets(vettore[i]->nome);
printf("\nInserisci il cognome %d : ",i);
gets(vettore[i]->cognome);
}
/* verifica contenuto */
printf("\n\n");
for(i=0;i<3;i++){
printf("\n %s",vettore[i]->nome);
printf("\n %s",vettore[i]->cognome);
}
printf("\n\n");
/* apertura file */
file1 = fopen("fileesempio.txt","wb");
if(file1==NULL){
fprintf(stderr,"\n\nErrore nell\'apertura del file1 1.\n\n");
exit(1);
}
/* caricamento file */
quanti = fwrite(vettore,sizeof(struct record),3,file1);
printf("\n\n%d\n\n",quanti);
if(quanti != 3){
fprintf(stderr,"\n\nErrore nella scrittura del file1 1.\n\n");
exit(1);
}
/* chiusura e riapertura file */
fclose(file1);
printf("\n\n");
for(i=0;i<3;i++){
printf("\n %s",vettore[i]->nome);
printf("\n %s",vettore[i]->cognome);
}
printf("\n\n");
file1 = fopen("fileesempio.txt","rb");
if(file1==NULL){
fprintf(stderr,"\n\nErrore nell\'apertura del file1 2.\n\n");
exit(1);
}
quanti = fread(vettore2,sizeof(struct record),3,file1);
if(quanti != 3){
fprintf(stderr,"\n\nErrore nella lettura del file1 2.\n\n");
exit(1);
}
fclose(file1);
for(i=0;i<3;i++){
printf("\n nome %d : %s",i,vettore[i]->nome);
printf("\n cognome %d : %s",i,vettore[i]->cognome);
printf("\n nome %d : %s",i,vettore2[i]->nome);
printf("\n cognome %d : %s",i,vettore2[i]->cognome);
}
return 0;
}

Ma non stavi studiando ing. informatica te?
Non le insegnano piu' le basi del C/C++?

 Non le insegnano piu' le basi del C/C++?
Rileggi, che ti fa bene.
                     IL SANTO

Rileggi cosa ? Quel "listato" ?
Dai davvero che insegnano ora Java ?
"IL SANTO" <J...@Infarinato.pesce> wrote in message
news:zW%_c.85343$OH4.2...@twister1.libero.it...


 Ciao!
Dato che sono appena tornato dallo scritto di Informatica 1 (giuro!)
dovrei riuscire a fare qualcosa.
Effettivamente il codice compila (ma e' C++, mica C!).
L'effetto, invero assai bizzarro, del codice in esecuzione:
http://aragost.altervista.org/prog.jpg
Ad una prima analisi, la lettura degli elementi da tastiera e' ok, ed
infatti la successiva verifica funziona una meraviglia.
Poi chiude il file, e ristampa la roba. E ancora va una meraviglia.
Poi traFica col fail, e stampa. E qui sta l'inghippo, giacche' il primo
viene stampato sballato e il secondo (quello caricato da file!) giusto.
Bene, ho messo un po' di controlli e a quanto pare sembra che quando
leggi dal file gli elementi di vettore2, si sminchiano quelli di
vettore. Dov'e' l'inghippo?
-- 
A: Sottotenente C.A.T.S.U.
'Lo sbattimento è l'anima del suonaggio.'
'd00d prog is like SHr3DD1N6 over tempo changez LOLOLOL!!!1!1'

 Dai davvero che insegnano ora Java ?
Boh, me pare de sě!
: |

 : |
Insegnano anche il buon vecchio C (almeno qui da noi nel profondo
nord). Sarebbe un grave errore cominciare con la programmazione ad
oggetti senza sapere nulla. :|


 
http://aragost.altervista.org/prog.jpg
Vabbè, ma sei cretino, il listato lo hai modificato.
                              IL SANTO
p.s.
Mi dissocio.

 Mi dissocio.
No! Lo giuro!


Scusa ma ho riletto il tuo post...
Il seguente dubbio... la tua era una richiesta d'aiuto o un gioco a premi ?

// CIAPA CHI'
#include<cstdio>
#include<cstdlib>
#include<memory>
struct record{
char nome[20];
char cognome[20];
};
main(){
struct record *vettore[3];
struct record *vettore2[3];
int i, quanti;
FILE *file1;
char buffer[256]="";
/* lettura degli elementi da tastiera */
 for(i=0;i<3;i++){
 vettore[i] = new record ;
 vettore2[i] = new record ;
 memset(vettore[i],0, sizeof record);
 memset(vettore2[i],0, sizeof record);
 printf("\nInserisci il mnome %d : ",i);
 gets(buffer);
 memcpy(vettore[i]->nome, buffer, sizeof vettore[i]->nome -1);
 printf("\nInserisci il cognome %d : ",i);
 gets(buffer);
 memcpy(vettore[i]->cognome, buffer, sizeof vettore[i]->cognome-1);
 }
/* verifica contenuto */
printf("\n\n");
  for(i=0;i<3;i++){
  printf("\n %s",vettore[i]->nome);
  printf("\n %s",vettore[i]->cognome);
  }
printf("\n\n");
/* apertura file */
file1 = fopen("fileesempio.txt","wb");
 if(file1==NULL)
 {
 fprintf(stderr,"\n\nErrore nell\'apertura del file1 1.\n\n");
 exit(1);
 }
/* caricamento file */
 for (i=0; i<3; i++)
 quanti = fwrite(vettore[i],sizeof  record, 1,file1);
 // printf("\n\n%d\n\n",quanti); ??
 if(!quanti)
 {
 fprintf(stderr,"\n\nErrore nella scrittura del file1 1.\n\n");
 exit(1);
 }
/* chiusura e riapertura file */
fclose(file1);
printf("\n\n");
for(i=0;i<3;i++){
printf("\n %s",vettore[i]->nome);
printf("\n %s",vettore[i]->cognome);
}
printf("\n\n");
file1 = fopen("fileesempio.txt","rb");
 if(file1==NULL){
 fprintf(stderr,"\n\nErrore nell\'apertura del file1 2.\n\n");
 exit(1);
 }
 for(i=0;i<3;i++)
 quanti = fread(vettore2[i], sizeof record,1,file1);
if(!quanti){
fprintf(stderr,"\n\nErrore nella lettura del file1 2.\n\n");
exit(1);
}
fclose(file1);
for(i=0;i<3;i++){
printf("nome %d : %s  \t",i,vettore[i]->nome);
printf("cognome %d : %s\n",i,vettore[i]->cognome);
printf("nome %d : %s  \t",i,vettore2[i]->nome);
printf("cognome %d : %s\n",i,vettore2[i]->cognome);
}
return 0;
}

 // CIAPA CHI'
GRANDIOSO!


Thanks a lot.
Cosi' funge, ma ... il software VERO non si scrive cosi'. Nemmeno con il
rattoppo che ho apportato io.

 ha scritto nel messaggio
news:dx4%c.208438$OR2.9...@news3.tin.it...

Infatti era una prova per vedere che cazzo mi ricordavo sui flussi.
Non mi cacare il cazzo e mettite a letto.
                      IL SANTO
p.s.
Gli dai il dito e si prende lo stinco

 
Il famoso Stinco di Santo.
-- 
Inviato da Virgilio 
http://newsgroup.virgilio.it
.. molto piu' di un servizio di news via web