2016-03-19 16 views
0

İki farklı dosyada, her iki dosya için aynı kodu kullanarak yazdırma. Hiçbir şey diğer dosyada, her şeyin düzgünHiçbir dosyaya yazmama c

FILE *my_pointer; 
    FILE *my_rank_ptr; 
    for(int name = 1;name<=5;name++) 
    { 
     //read(name) 
     char filename[21]; 
     sprintf(filename, "port%d.out", name); 

     char temp_file[21]; 
     sprintf(temp_file, "my_rank%d.out", name); 


     my_rank_ptr = fopen(temp_file,"w"); 
     my_pointer = fopen(filename,"w"); 


     fprintf(my_rank_ptr, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t"); 
     for(int i=1;i<=nstock;i++) 
     { 
     fprintf(my_rank_ptr, "var%d\t",i); 
     } 
     fprintf(my_rank_ptr, "fitness value\n"); 



     fprintf(my_pointer, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t"); 
     for(int i=1;i<=nstock;i++) 
     { 
     fprintf(my_pointer, "var%d\t",i); 
     } 
     fprintf(my_pointer, "fitness value\n"); 

//Some code follows this 
     fclose(my_pointer); 
     fclose(my_rank_ptr); 

} 
+0

okuma() biz ortamınızı bilmek gerekir standart c fonksiyonu ve yazılı ve kullanım tüm fonksiyonlar değildir. – 12431234123412341234123

+0

Yorum yaptıktan sonra bile çalışmayan read() –

+1

Dosyaları açarken hata olup olmadığını kontrol etmiyorsunuz. Başlamak için iyi bir yer olurdu. Aynı şekilde yazılar ile. –

cevap

0

her

fprintf(my_rank_ptr .... 

bir

fprintf(my_pointer 

olarak sonra Ekle yazılır oysa ikinci dosya (my_rank1.out) ile yazılmış olan Aynı dosyada iki dosyaya yazmak istediğinizde

0

Belirtildiği gibi Yorumlarda, fopen ifadenizin çıktısını mı alıyorsunuz? çalışırken

 fprintf(my_rank_ptr, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t"); 
     fprintf(my_pointer, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t"); 
     for(int i=1;i<=nstock;i++) 
     { 
     fprintf(my_rank_ptr, "var%d\t",i); 
     fprintf(my_pointer, "var%d\t",i); 
     } 
     fprintf(my_rank_ptr, "fitness value\n"); 
     fprintf(my_pointer, "fitness value\n"); 
0

bir izin hatası alıyorum edilebilir: senin DOSYA işaretçileri NULL değilseniz

... 
my_rank_ptr = fopen(temp_file,"w"); 
if(!my_rank_ptr) return -1; 
my_pointer = fopen(filename,"w"); 
if(!my_pointer) return -1; 
... 

ardından basit kullanım için
aynı döngü kullanmak için tüm printf ifadeleri ayarlayabileceğini dosyayı açmak için açın. Bir dosyaya yazmaya çalışmadan önce fopen() çağrısının başarılı olup olmadığını her zaman kontrol etmelisiniz.

 my_rank_ptr = fopen(temp_file,"w"); 

(! My_rank_ptr) // açmaya başarısız olursa ...

İlgili konular