Προς το περιεχόμενο

αρχεία δίσκου στη c


anyp4kouo_ydor

Προτεινόμενες αναρτήσεις

Δημοσ.

γεια σας παιδιά,

λοιπόν: έφτιαξα ένα πρόγραμμα που δημιουργεί ένα αρχείο δίσκου και αποθηκεύει έναν αριθμό και ένα που τον διαβάζει. Το πρώτο δουλεύει καλά αλλά το δεύτερο δουλεύει εμένα. Μου εμφανίζει "dose tin timi" το οποίο υπάρχει στο πρόγραμμα εγραφής. Σαν να μπερδεύονται τα δύο προγράμματα. Η πλάκα είναι ότι έχω ξαναγράψει τον ίδιο κώδικα με άλλους τίτλους και λειτουργεί. Επιπλέον το ίδιο μου κάνει και με την getchar, σε άλλα προγράμματα δουλεύει, σε αυτά όχι.

Βοηθάτε μπας και μάθουμε προγραμματισμό :-)

Παρακάτω σας παραθέτω τον κώδικα (χρησιμοποιώ τον dev c++):

 

 

>#include "stdio.h"
#include "stdlib.h"

int main()
{
   FILE *fp;
   int timi,x;
   char *on_arxeiou="c:\\arxeia diskou c\\timi.txt";
   char *leitourgia="wb";
   
   
   printf("dose tin timi");
   scanf("%d",&timi);
   
   
   if ((fp=fopen(on_arxeiou,leitourgia))==NULL)
   {
                fprintf(stderr,"error in opening");
                
                exit(1);
   }
   if  (fwrite(&timi,sizeof(int),1,fp)!=1)
   {
       fprintf(stderr,"error in writing");
       
       exit(1);
   }
   fclose(fp);
   printf("\n%d",timi);
   while (x<1000000000)
     {
           x++;
     }

   
   
   return 0;
}

 

>#include "stdio.h"
#include "stdlib.h"

int main()
{
   FILE *fp;
   int timi;
   char *on_arxeiou="c:\\arxeia diskou c\\timi.txt";
   char *leitourgia="rb";
   
   
       
        
   if ((fp=fopen(on_arxeiou,leitourgia))==NULL)
   {
                fprintf(stderr,"error in opening");
                
                exit(1);
   }
   
   if  (fread(&timi,sizeof(int),1,fp)!=1)
   {
       fprintf(stderr,"error in reading");
       
       exit(1);
   }
   fclose(fp);
   printf("\nh timi einai:%d",timi);
   
   getchar();    
   return 0;
}

Δημοσ.

πως ονομάζεις τα αρχεία με τον κώδικα (.c) ?

 

Επίσης καλό θα ήταν όταν ποστάρεις κώδικα να τον περικλείεις μέσα σε [ code ] [/code ] (χωρίς τα κενά μεταξύ [c και e]

 

edited: MeTaXaS4 με πρόλαβες

Δημοσ.
Επίσης καλό θα ήταν όταν ποστάρεις κώδικα να τον περικλείεις μέσα σε [ code ] [/code ] (χωρίς τα κενά μεταξύ [c και e]

 

 

έφτιαξα τον κώδικα

 

πως ονομάζεις τα αρχεία με τον κώδικα (.c) ?

 

αν εννοείς το όνομα των προγραμμάτων: <<δοκιμή στα αρχεία δίσκου>>,<<δοκιμή στα αρχεία δίσκου άνοιγμα>>

Δημοσ.

Δεν βλέπω κάποιο πρόβλημα, έκανα συνάρτηση την εγγραφή σε αρχείο και το δοκίμασα και τρέχει μια χαρά:

 

>
#include "stdio.h"
#include "stdlib.h"

// ------------------------------------------------------------------------------------
int write_file( void )
{
   FILE *fp;
   int timi,x;
   char *on_arxeiou = "a.dat";
   char *leitourgia = "wb";
   
   printf("dose tin timi");
   scanf("%d",&timi);
   
   if ( (fp=fopen(on_arxeiou,leitourgia)) == NULL )
   {
                fprintf(stderr,"error in opening");
                return 0;
   }
   if  ( fwrite(&timi, sizeof(int), 1, fp) != 1 )
   {
       fprintf(stderr,"error in writing");
       return 0;
   }
   fclose(fp);

   printf("\n%d",timi);
   while (x < 1000000000)
           x++;
   
   return 1;
}

// ------------------------------------------------------------------------------------
int main()
{
FILE *fp;
int timi;
char *on_arxeiou = "a.dat";
char *leitourgia = "rb";

write_file();

if ( (fp=fopen(on_arxeiou,leitourgia)) == NULL )
{
	 fprintf(stderr,"error in opening");
	 exit(1);
}

if  (fread(&timi, sizeof(int), 1, fp) !=1 )
{
	fprintf(stderr,"error in reading");
	exit(1);
}
fclose(fp);
printf("\nh timi einai:%d",timi);

fflush(stdin); getchar();
return 0;
}

Δημοσ.

Το πρώτο δουλεύει καλά αλλά το δεύτερο δουλεύει εμένα. Μου εμφανίζει "dose tin timi" το οποίο υπάρχει στο πρόγραμμα εγραφής.

 

Τρέχεις το δεύτερο πρόγραμμα και σου τρέχει το πρώτο?

 

 

Έκανες επανεκκίνηση το Dev-C++ να τα τρέξεις από την αρχή?

Δημοσ.

Τρέχεις το δεύτερο πρόγραμμα και σου τρέχει το πρώτο?

 

 

Έκανες επανεκκίνηση το Dev-C++ να τα τρέξεις από την αρχή?

 

φυσικά φίλε μου και σου λέω: ο ίδιος κώδικας κάτω από άλλο όνομα προγράμματος, τρέχει κανονικά

Δημοσ.

Κάτι με το setup σου πρέπει να παίζει και όχι με το πρόγραμμα. Δοκίμασε να κάνεις compile και να τρέξεις τα προγράμματά σου από γραμμή εντολών ή κατέβασε και την Pelles C.

 

ΥΓ. Άσχετο, το Dev C++ είναι abandonware.

Δημοσ.
Κάτι με το setup σου πρέπει να παίζει και όχι με το πρόγραμμα. Δοκίμασε να κάνεις compile και να τρέξεις τα προγράμματά σου από γραμμή εντολών ή κατέβασε και την Pelles C.

 

είχες δίκιο. η pelles c με έσωσε. ευχαριστώ

Δημοσ.

είχες δίκιο. η pelles c με έσωσε. ευχαριστώ

Χαίρομαι :)

 

Έχει και πολύ καλό debugger η Pelles-C (στα Project options ενεργοποίηση για τον compiler, τον assembler και στον linker τα debug-information... αν έχεις εγκαταστήσει την 64-μπιτη έκδοση, στον Linker βάλε σκέτο "CodeView format" ).

 

Κατόπιν με δεξί κλικ -> Toggle Brakepoint στις γραμμές που σε ενδιαφέρουν βάζεις brakepoints και διαλέγοντας μετά Debug αντί για Run, σε σταματάει σε εκείνες τις γραμμές για να αποφασίσεις μετά αν θα προχωρήσεις βήμα-βήμα δείχνοντάς σου ανά πάσα στιγμή τις τιμές των μεταβλητών σου, τη στοίβα στη μνήμη, τον κώδικα σε assembly, κλπ.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...