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