Δημοσιεύτηκε: 27 Ιαν 2009, 19:00
από thodoris_turtle
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? πως ειναι δομημενος?