2011-01-09 14 views
6

मैं एक फ़ाइल के लिए एक 1 डी सरणी लिखें नीचे दिए गए कोड का उपयोग करते थे लिखें:सी में एक फाइल करने के लिए 2 डी सरणी

FILE *fp; 
float floatValue[5] = { 1.1F, 2.2F, 3.3F, 4.4F, 5.5F }; 
int i; 

if((fp=fopen("test", "wb"))==NULL) { 
    printf("Cannot open file.\n"); 
} 

if(fwrite(floatValue, sizeof(float), 5, fp) != 5) 
    printf("File write error."); 
fclose(fp); 

/* read the values */ 
if((fp=fopen("test", "rb"))==NULL) { 
    printf("Cannot open file.\n"); 
} 

if(fread(floatValue, sizeof(float), 5, fp) != 5) { 
    if(feof(fp)) 
     printf("Premature end of file."); 
    else 
     printf("File read error."); 
} 
fclose(fp); 

for(i=0; i<5; i++) 
    printf("%f ", floatValue[i]); 

मेरा प्रश्न है अगर मैं लिख सकते हैं और 2 डी सरणी में पढ़ना चाहते हैं ??

उत्तर

6

आप एक ही दृष्टिकोण का उपयोग कर सकते हैं ... सिर्फ निम्न परिवर्तन

float floatValue[3][5] = {{ 1.1F, 2.2F, 3.3F, 4.4F, 5.5F }, 
          { 6.6F, 7.7F, 8.8F, 9.9F, 8.8F }, 
          { 7.7F, 6.6F, 5.5F, 4.4F, 3.3F }}; 
int i,j; 

...

बनाता है
if(fwrite(floatValue, sizeof(float), 3*5, fp) != 3*5) 

...

if(fread(floatValue, sizeof(float), 3*5, fp) != 3*5) { 

... निश्चित रूप से

for(j=0; j<3; j++) { 
    for(i=0; i<5; i++) 
     printf("%f ", floatValue[j][i]); 
    printf("\n"); 
} 

ध्यान दें कि यह सबसे अच्छा तरीका है लोड डेटा को बचाने के लिए/नहीं है, खासकर यदि आप अलग अलग compilers/प्रणालियों के बीच या बस भविष्य के साथ कुछ संगतता करना चाहते हैं। सहेजने और बहाल करने का विषय अक्सर serialization नाम दिया जाता है और केवल एक बहुत ही छोटा नाबालिग ओवरहेड के साथ आप अधिक मॉडल को अधिक जटिल बनाते समय विशेष रूप से अधिक लचीलापन प्राप्त कर सकते हैं।

3
एकल लूप के लिए आप एक दूसरे को जैसे जोड़ देगा के बजाय

:

for(i=0;i<lines;i++) { 
for(j=0;j<num;j++) { 
    fprintf(file,"%d ",array[i][j]); 
} 
fprintf(file,"\n");} 
+0

जबकि यह उचित कोड है, तो ऑप सरणी के द्विआधारी प्रतिनिधित्व को लिखने/पढ़ने के लिए कुछ ढूंढ रहा है। – EvilTeach

संबंधित मुद्दे