עבור לתוכן

שינוי מיקום מבציע בקובץ C

Featured Replies

פורסם

אני צריך לבנות פונקציה שתשנה ותחזיר את המיקום של פוינטר בקובץ. בניתי פונקציה אבל קיבלתי ארור מוזר אשמח אם תוכלו לעזור לי לתקן אותו:

void del(FILE *fin,char *name) 
{
struct book b;
char name2[80];

fseek(fin,-sizeof(b),SEEK_CUR);
fread(&b,sizeof(b),1,fin);
strcpy(name2,b.name);
search(fin,name);
fwrite(&b,sizeof(b),1,fin);
search(fin,name2);
}

void* search(FILE *fin, char name[])
{
struct book b;

rewind(fin);
do
{
fread(&b,sizeof(b),1,fin);
fseek(fin,( b.indexName)*sizeof(b),SEEK_SET);
}
while( strcmp(b.name,name)!=0 && b.indexName!=-1 );
if(b.indexName==-1)
puts("there is no such book");
fseek(fin,-sizeof(b),SEEK_CUR);
}

(הstruct מורכב בין היתר מIndexAthor שמצביע לשורה הבאה (מיון מסוג מסוים שלא חשוב לפרט כרגע))

הERROR שאני מקבל הוא:

'void *(FILE *,char *)' differs in levels of indirection from 'int ()'

הארור לא מראה מיקום מסויים אלא את כל הפונקציה, ובמידה ואני מוחק את הקריאות לפונקציה (בפונקציה del) הארור נעלם....

מקווה שהבנתם ותוכלו לעזור.. אם לא אז תכתבו פה מה לא הבנתם ואני אסביר

תודה רבה לכל מי שיעזור :)

פורסם

האם דאגת להצהיר על הפונקציה search איפשהו לפני ההגדרה של del?

פורסם
  • מחבר

וואי תודה רבה!! :yelclap:

עזרת לי מאוד :)

ישר כוח!

פורסם

הסבר לבעיה, אגב: בקומפיילרים מסויימים של C, אם אתה משתמש בפונקציה בלי להצהיר עליה, אז הוא "מנחש" עבורך שזו פונקציה שמחזירה int. הוא צעק עליך כי הוא חשב שהגדרת אותה מחדש כפונקציה שמחזירה *void.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים