פורסם 2011 בדצמבר 613 שנים אני צריך לבנות פונקציה שתשנה ותחזיר את המיקום של פוינטר בקובץ. בניתי פונקציה אבל קיבלתי ארור מוזר אשמח אם תוכלו לעזור לי לתקן אותו: 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) הארור נעלם.... מקווה שהבנתם ותוכלו לעזור.. אם לא אז תכתבו פה מה לא הבנתם ואני אסביר תודה רבה לכל מי שיעזור
פורסם 2011 בדצמבר 613 שנים הסבר לבעיה, אגב: בקומפיילרים מסויימים של C, אם אתה משתמש בפונקציה בלי להצהיר עליה, אז הוא "מנחש" עבורך שזו פונקציה שמחזירה int. הוא צעק עליך כי הוא חשב שהגדרת אותה מחדש כפונקציה שמחזירה *void.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.