Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

...IDE, compilers, κλπ

Συντονιστής: konnn

Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 26 Ιαν 2009, 14:16

Κώδικας: Επιλογή όλων
/* Διάβασμα ακεραίου απο δυαδικό αρχείο */
#include <stdio.h>
int main()
{
FILE *arxeioA;
int temp;
arxeioA = fopen("arxeio1.txt", "r");
while (!feof(arxeioÁ))
fread(&temp,sizeof(temp),1,arxeioÁ);
printf("Periexomeno arxeiou:%d\n",temp);
fclose(arxeioA);
return 0;
}



οταν κανω complile μου εμφανιζει το ακουλουθω bug εκει που ειναι το while και το fread συγκεκριμενα μου λεει οτι stray "\193" in program

`arxeio' undeclared (first use this function)

(Each undeclared identifier is reported only once for each function it appears in.)

καμια ιδεα ? :roll:
Τελευταία επεξεργασία από thodoris_turtle και 26 Ιαν 2009, 14:43, έχει επεξεργασθεί 1 φορά/ες συνολικά
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ

Δημοσίευσηαπό Dimitris » 26 Ιαν 2009, 14:32

To arxeioÁ είναι διαφορετικό από το arxeioA.

ΥΓ. Πιο συγκεκριμένα \193 είναι ο χαρακτήρας Á που χρησιμοποίησες.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ

Δημοσίευσηαπό thodoris_turtle » 26 Ιαν 2009, 14:43

Dimitris έγραψε:To arxeioÁ είναι διαφορετικό από το arxeioA.

ΥΓ. Πιο συγκεκριμένα \193 είναι ο χαρακτήρας Á που χρησιμοποίησες.


ok

κατι ασχετο ειδα ενα τικ που λεει αποδοχη αυτης της απαντησης αυτο τι ειναι ? σε τι χρησιμευει

κατι αλλο σχετικα με το προγραμμα

αυτο το /193 ειναι κατι σαν ASCII code? για το A' ;
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό Dimitris » 26 Ιαν 2009, 15:06

thodoris_turtle έγραψε:κατι ασχετο ειδα ενα τικ που λεει αποδοχη αυτης της απαντησης αυτο τι ειναι ? σε τι χρησιμευει

Δε καταλαβαίνω, που το είδες αυτό;

thodoris_turtle έγραψε:αυτο το /193 ειναι κατι σαν ASCII code? για το A' ;

Κάτι σαν ναι, αλλά όχι ακριβώς. Εξαρτάται από την κωδικοποίηση που χρησιμοποιείς, πχ. utf-8.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 26 Ιαν 2009, 15:11

το τικ το εχετε βαλει εσεις σε καθε ποστ(Εκει που λεει επεξεργασια, διαγραφη μηνυματος κλπ ) .

κατι αλλο Η εντολή fflush(stdin); διορθώνει τυχόν προβλήματα που
προκύπτουν από την επεξεργασία χαρακτήρων. Μπορείτε να την αγνοήσετε.

Τι σημαινει αυτο με απλα λογια?
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό Dimitris » 26 Ιαν 2009, 15:24

Η fflush δεν είναι εντολή, είναι συνάρτηση. Για να καταλάβεις τι κάνει πρώτα πρέπει να καταλάβεις πως λειτουργεί η σχέση τερματικού πληκτρολογίου. Ας πούμε ότι έχει το τερματικό ανοιχτό και πληκτρολογείς εντολές, ls, cd, klp. Αυτό που κάνει ο υπολογιστής είναι να αποθηκεύει τους χαρακτήρες που γράφεις σε ένα buffer, μία μνήμη. Αν είναι πολύ απασχολημένος ο υπολογιστής θα δεις ότι οι χαρακτήρες που γράφεις δεν φαίνονται αμέσως. Παρόλ'αυτά εμφανίζονται λίγο αργότερα. Η συνάρτηση fflush σβήνει τα δεδομένα που υπάρχουν σε αυτό το buffer. Aν τώρα έχεις ένα πρόγραμμα που τυπώνει δεδομένα αλλά ταυτόχρονα κάνει χρονοβόρους υπολογισμούς, αλλά εσύ θέλεις να δεις τα δεδομένα σου στην οθόνη την ώρα που τρέχει το πρόγραμμα τοτε θα πρέπει να χρησιμοποιήσεις κάποιο συνδυασμό της fflush για να κρατάς το stream ενημερωμένο.

Για περισσότερες πληροφορίες http://en.wikipedia.org/wiki/Fflush
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 27 Ιαν 2009, 09:33

struct
{
char name[40];
int code;
double height;
}agent;
int search(FILE *fptr,agent agent1); /*Προτότυπο συνάρτησης*/

Εδω ο Compiler μου εμφανιζει 'agent' is not a type' πως θα το διορθωσω?
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό Dimitris » 27 Ιαν 2009, 11:56

Αυτά είναι ερωτήσεις C και δεν έχουν να κάνουν με το ubuntu. Ελπίζω οι συντονιστές να μην έχουν αντίρρηση.

Καταρχήν τι θέλεις να κάνεις; Αν θέλεις να ορίσεις μια δομή/τύπο που να λέγεται agent, τοτε το κάνεις λάθος. Θα έπρεπε να ήταν:
Κώδικας: Επιλογή όλων
struct agent
{
char name[40];
int code;
double height;
};

Αυτό που έγραψες οριζει μια μεταβλητή agent που να έχει τη δομή που έδωσες, αλλά η ίδια η δομή δεν έχει όνομα.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό thodoris_turtle » 27 Ιαν 2009, 19:00

Dimitris έγραψε:Αυτά είναι ερωτήσεις C και δεν έχουν να κάνουν με το ubuntu. Ελπίζω οι συντονιστές να μην έχουν αντίρρηση.

Καταρχήν τι θέλεις να κάνεις; Αν θέλεις να ορίσεις μια δομή/τύπο που να λέγεται agent, τοτε το κάνεις λάθος. Θα έπρεπε να ήταν:
Κώδικας: Επιλογή όλων
struct agent
{
char name[40];
int code;
double height;
};

Αυτό που έγραψες οριζει μια μεταβλητή agent που να έχει τη δομή που έδωσες, αλλά η ίδια η δομή δεν έχει όνομα.



ok αμα εχουν προβλημα ας ποσταρει καποιος συντονιστις ωστε το θεμα να κλειδωθει ή να διαγραφει εγω δεν εχω προβλημα.

εκανα αυτο που μου ειπες . οταν φτιαχνω μια δομη μετα δεν πρεπει να δημιουργησω μια μεταβλητη η οποια θα ειναι οπως ειναι και η δομη?

το τελος πανον προγραμμα το εκανα ως εξης

Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct agent
      {
           char name[40];
           int code;
           double height;
           }agent1;
int search(FILE *fptr,agent agent1);
int main()
{
   
           
        char numstr[81];
        FILE *fptr;
        int anazitisi;
        //clrscr();
        if((fptr=fopen("struct1.rec","ab"))==NULL)
           {
                 printf("Can't open file agents.rec");
                 exit(1);                                 
             }   
        do
        {
             printf("\nEnter Name:"); /* get name.*/
             gets(agent1.name);
             printf("\nEnter number:");
             gets(numstr);
             agent1.code=atoi(numstr);
             printf("\nEnter height:");
             gets(numstr);
             agent1.height=atof(numstr);
             
             fwrite(&agent1,sizeof(agent1),1,fptr); /*write struct to file*/
             printf("\n");
             printf("Add another agent (y/n)?:");
             
             }while(getche()=='y'); 
            fclose(fptr);
            getch();
            printf("\n");
            if((fptr=fopen("struct1.rec","rb"))==NULL)
            {
               printf("Can't open file struct1.rec");
               getch();
               exit(1);
              }
             while(fread(&agent1,sizeof(agent1),1,fptr)==1)
              {
                 printf("Name:%s\n",agent1.name);
                 printf("Number:%d\n",agent1.code);
                 printf("Height:%f\n",agent1.height);
                }
                fclose(fptr);
                getch();
           
            anazitisi=search(fptr,agent1);
            if(anazitisi==0)
             
              printf("Den entopistike\n");
             else
              printf("Entopistike stin thesi %d",anazitisi);
            return 0;   
     }

int search(FILE *fptr,agent agent1)
{
    int flag,kodikos,position;
   
    fclose(fptr);
    fptr=fopen("struct1.rec","r");
    flag=0;
    position=0;
    printf("Dose ton kodiko pros anazitisi:");
    scanf("%d",&kodikos);
    while((fread(&agent1),sizeof(agent1),1,fptr)==1)&&(flag==0)
    {
         position++;
         if(agent1.code==kodikos)
          {
            flag=1;
            printf("%s\n",agent1.name);
            printf("%d\n",agent1.code);
            printf("%f\n",agent1.height);
            }                                                     
      }
      if(flag==0)
       return 0;
       else
        return(position);
    }



ειμαι αρχαριος χρηστης και γι αυτο δημιουργησα αυτο το νημα

τωρα εχω το εξεις λαθος ο compiler μου εμφανιζει `size_t fread(void*, size_t, size_t, FILE*)' και με παραπεμπει στο αρχειο επικεφαληδας stdio.h στην γραμμη _CRTIMP size_t __cdecl fread (void*, size_t, size_t, FILE*);

τι να κανω τωρα?

σημειωσει το συγκεκριμενο προγραμμα ειναι για να αποθηκευσουμε στο αρχειο εγγραφες συγκεκριμενα πληροφοριες κωδικος ,ονομα και υψος

edit:

να ρωτησω κατι αλλο βασικω

Κώδικας: Επιλογή όλων
struct agent
      {
           char name[40];
           int code;
           double height;
           }agent1,agent2[20];


το agent2[20]; ειναι ενας πινακας δομων ε? αυτος ο πινακας πως ειναι δομημενος δηλαδη η πρωτη θεση εχει το name,η δευτερη θεση το code , η τριτη το height , η τεταρτη παλι το name kok? πως ειναι δομημενος?
Η ζωή είναι κενή χωρίς ιδέες. Δεν υπάρχει μεγαλύτερη χαρά από τον αγώνα στο όνομά τους.

Φιντέλ Κάστρο Ρους
31 Ιούλη του 2007
Άβαταρ μέλους
thodoris_turtle
punkTUX
punkTUX
 
Δημοσιεύσεις: 187
Εγγραφή: 28 Αύγ 2008, 15:18
Τοποθεσία: Άνω Γλυφάδα
Εκτύπωση

Re: Αρχεια Κειμένου Και Δυαδικά Αρχεία βοηθεια σε Bugs κλπ[ΟΚ]

Δημοσίευσηαπό Nisok » 27 Ιαν 2009, 19:22

thodoris_turtle έγραψε:
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct agent
      {
           char name[40];
           int code;
           double height;
           }agent1;
int search(FILE *fptr,agent agent1); // Στο search δεν θα βάζει το αρχείο αλλά θα το φορώνεις σε ένα πίνακα και θα βάζεις το πίνακα.
int main()
{
   
           
        char numstr[81];
        FILE *fptr;
        int anazitisi;
        //clrscr();
        if((fptr=fopen("struct1.rec","ab"))==NULL)
           {
                 printf("Can't open file agents.rec");
                 exit(1);                                 
             }   
        do
        {
             printf("\nEnter Name:"); /* get name.*/
             gets(agent1.name); // Θα χρησιμοποιήσεις scanf σε όλα τα gets.
             printf("\nEnter number:");
             gets(numstr); // Περιττό θα βάλεις scanf('%d',&numstr)  και το numstr θα το κάνεις int.
             agent1.code=atoi(numstr);
             printf("\nEnter height:");
             gets(numstr);
             agent1.height=atof(numstr); // Το ίδιο με το πιο πάνω
             
             fwrite(&agent1,sizeof(agent1),1,fptr); /*write struct to file*/
             printf("\n");
             printf("Add another agent (y/n)?:");
             
             }while(getche()=='y'); 
            fclose(fptr);
            getch();
            printf("\n");
            if((fptr=fopen("struct1.rec","rb"))==NULL)
            {
               printf("Can't open file struct1.rec");
               getch();
               exit(1);
              }
             while(fread(&agent1,sizeof(agent1),1,fptr)==1) // Αυτό δεν πρέπει να ισχύει! Το fread θα το κάνεις μέχρι να βρείς eof ( end of file)
              {
                 printf("Name:%s\n",agent1.name);
                 printf("Number:%d\n",agent1.code);
                 printf("Height:%f\n",agent1.height);
                }
                fclose(fptr);
                getch();
           
            anazitisi=search(fptr,agent1); // Θα το αλλάξεις όπως σου έγραψα
            if(anazitisi==0)             
              printf("Den entopistike\n");
             else
              printf("Entopistike stin thesi %d",anazitisi);
            return 0;   
     }

int search(FILE *fptr,agent agent1)
{
    int flag,kodikos,position;
   
    fclose(fptr); // Θα τα αλλάξεις ΟΛΑ αυτά.
    fptr=fopen("struct1.rec","r");
    flag=0;
    position=0;
    printf("Dose ton kodiko pros anazitisi:");
    scanf("%d",&kodikos);
    while((fread(&agent1),sizeof(agent1),1,fptr)==1)&&(flag==0)
    {
         position++;
         if(agent1.code==kodikos)
          {
            flag=1;
            printf("%s\n",agent1.name);
            printf("%d\n",agent1.code);
            printf("%f\n",agent1.height);
            }                                                     
      }
      if(flag==0)
       return 0;
       else
        return(position); // Δεν θέλει περένθεση
    }





Γενικά δες τα σχόλια που έβαλα.
Φίλε όλη η anazitisi είναι για τα μπάζα. Όπως σου είπα θα φορτώνεις το αρχείο σε ένα πίνακα τύπου agent και τα ψάχνεις σε αυτόν.
Επίσης τώρα το είδα δεν θα γράφεις μια μια τις δομές στο αρχείο , αλλά θα βάζεις μέσα όλο το πίνακα όταν το γεμίσεις.
Στη συνέχεια ΑΜΑ θέλεις θα πηγαίνεις το curson του αρχείο στη θέση αυτή με fseek.
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Επόμενο

Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού