עבור לתוכן

בעיה בהעברת struct לפונקציה ב C ובעיה בקריאה מקובץ עד הסוף

Featured Replies

פורסם

שלום לכולם..

הבעיה היא כזו- אפיינתי STRUCT כלשהוא וכעת יש לי אחד כזה ב main.

אני מעוניין להעביר פויינטר אליו לשיטות שונות, ונתקל בשגיאה מהקומפיילר.

על רגל אחת -


typedef struct samplePoint
{
...
int a;
...
} point;

void someFunction( point * p, ...)
{
p.a = ...;
}


אני מתכנת ב CodeBlocks + GCC. בנסיון לקמפל אני מקבל שגיאות כמו:

|19|error: request for member '_dimension' in something not a structure or union|

כאשר אתם יכולים לנחש שזהו אחד מהשדות של הנקודה.

חותמת אותה פונקציה היא בדומה לזו שציינתי בדוגמה.

אשמח להבין מה עשיתי פסול וכיצד בכל זאת ניתן לעשות זאת.

תודה!

פורסם

כשיש לך מצביע למערך אתה צריך לפנות לאיברים עם <- ולא עם נקודה

פורסם
  • מחבר

תודה, בדיוק תוך כדי כתיבת תגובתך אני עורך את ההודעה כדי לעדכן במשהו שגיליתי.

קודם כל, אתה צודק, ברגע שעשיתי "%lf,%lf" זה הסתדר.

הבעיה שלי היא שאני יודע מקלט מהקובץ מהו אורך כל שורה, ובעצם, בהינתן N אורך שורה, אני צריך לבצע סוג של ריצה עד סוף הקובץ, ובכל שורה לקרוא N מספרים מסוג דאבל, המופרדים בפסיק.

מבנה הקובץ הוא כזה(תזכורת):


1,2
3,3
0.5,-2
..

for N = 2;

תחילה חשבתי פשוט לבצע קריאה של דאבל, כאשר אני יודע מראש כמה יש לי בשורה, לכן כרגע יש אופציה אחת שאני רואה לנכון שתעבוד:

N-1 קריאות של lf,, כלומר עם פסיק, כדי שיעבוד, ואז קריאה אחרונה עם תו ירידת שורה n\.

אלא אם..יש אפשרות יותר אלגנטית, להכל במכה?

פורסם

אם אני זוכר נכון FSCANF מבצעת קריאה עד שהיא מגיעה לרווח בגלל שאתה מפריד עם פסיק היא מנסה לקרוא את הכל בפעם אחת וזה לא מסתדר...

זה מזיכרון אבל אני דיי בטוח תבדוק את זה.

פורסם
  • מחבר

משהו השתבש לי במוח.. :kopfpatsch:

התגובה לתגובתך בעצם נמצאת בהודעה מעליך. בטעות ערכתי אותה :silly:

עדכון:

ניסיתי לקרוא N-1 פעמים מספר+פסיק, ואז לקרוא מספר\מספר עם \n, ושניהם לא עבדו:

להלן הדוגמה:


while (!feof(source))
{
for (n = 0; n < dimension -1; n++)
{
fscanf(source,"%lf,", &dim);
printf("%lf,",dim);
}
fscanf(source,"%lf", &dim);
printf("%lf\n", &dim);
}

הערך הראשון נקלט ואילו השני נקלט כ0, כך עבור כל שורה.

פורסם

אולי לשים לולאה ראשית שתרוץ עד סוף קובץ בטוחה לולאה שתקרא N-1 פעמים ,lf% ואחריה עוד קריאה רגילה של איבר אחרון כי אחריו יש לך /n

OK אני רואה שניסת

ארכיון

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

דיונים חדשים