תכנות C קליטת נתונים מקובץ

eleleljubrani

New member
תכנות C קליטת נתונים מקובץ

איך אוכל לקלוט שם(גודל מקסימלי 20) שני ערכים מספריים ואחר כך מצב(Yאו N) מקובץ שנראה כך:"Big Little Lies,355,7,Y
Riverdale,401,1,N
The X-Files,402,3,Y
Dark,444,2,Y"

איך אוכל לדלג על הפסיק בכל פעם?
*הגרשיים לא נמצאים בקובץ
 

EyesToSee

New member
לא תכנת אבל..

הגדר מבנה נתונים (record) אשר זהה למבנה הנתונים שלך ואזי קרא כל שורת נתונים מתוך הקובץ לתוך התכנית שלך.
השתמש בנתונים כפי שהוגדרו במבנה הנתונים (שדות).

אגב, מבנה נתונים כזה נקרא CSV ותוכל למצוא עליו לא מעט הסברים.

comma-separated values (CSV) file stores tabular data (numbers and text) in plain text.
 

eleleljubrani

New member
הבהרה

הבעיה שלי היא מה אני צריך לכתוב ב fscanf כדי לקלוט תבים נכונים, זה הייה מה שעשיתי ותמיד קיבלתי EOF כערך מוחזק של ה fscanf
\\
char sname[22], sid;
int snum, sstatus;
while (fscanf(f1, "% 21[^, ], %d, %d, %c\n", sname, &snum, &sstatus, &sid) != EOF)
printf("%-20s | %3d | %3d | %c\n\n", sname, snum, sstatus, sid);
&nbsp
למראת ש שני הקבצים נפתחו בלי להחזיר ערך NULL
 

EyesToSee

New member
זה לא מה שהתכוונתי...

אתה לא מגדיר מבנה נתונים - מבנה רשומה.

ההבנה שלי היא שמבנה הקובץ שלך הוא = טבלא שמוורכבת מרשומות בעלות מבנה זהה, כאשר כל שדה ברשומה מופרד מרעהו בפסיק, והרשמות מפורדות בתוויות של "שורה חדשה" ואולי גם "TAB".
אם זה המבנה, אזי ההסבר שלי יתאים לך.

תוכל לבדוק את מבנה הקובץ בעזרת EDITOR פשוט.
 

eleleljubrani

New member
מבנה שורה בקובץ

אני יודע את המבנה של הקובץ שלי,, המבנה הוא שם עד 20 תוו פסיק מספר עד 3 ספרות פסיק מספר עד 2 ספרות פסיק אחת האותיות Y/N וירידת שורה אבל אני לא יודע מה לכתוב ב fscanf כדי לקלוט נתונים אלה
&nbsp
דוגמה לשורה:
Money Heist,8,4,Y
 

EyesToSee

New member
אנחנו לא צועדים לפי אותה תזמורת (תרגום מאנגלית)...

אולי לא למדת את הנושאים שעליהם אני מדבר.
אני יכול להנחות אותך צעד , צעד על פי התזמורת שלך (כולל תיקון שגיאות) אבל זו לא תהיה מטרת התרגיל (לדעתי) ובוודאי לא הדרך שאני תומך בה.
דוגמית:
https://www.geeksforgeeks.org/readwrite-structure-file-c/
אני יורד מהנושא.
יש בפורום אנשים מנוסים וטובים ממני.
בהצלחה.
 
למעלה