עבור לתוכן

עזרה עם קבצים בשפת C

Featured Replies

פורסם

שלום,

יש לי תרגיל שאומר כך:

הגדר מערך בן 5 מחרוזות וקלוט מהמשתמש 5 מחרוזות אל המערך.

את המערך של 5 מחרוזות שמור בקובץ בשם tar2.dat. בין מחרוזות אחת לאחרת הכנס את התו שורה חדשה.

רשום קטע קוד שיספור כמה שורות יש בקובץ.

יש לי כמה בעיות עם התרגיל:

א.מערך של 5 מחרוזות??

ב.איך יורדים\מכניסים שורה חדשה בקובץ ולאחר מכן איך יודעים מתי נגמרת שורה בקובץ?

תודה רבה.

פורסם

מחרוזת זה פשוט מערך של char (שזה גם מצביע ל-char). בשביל מערך של מחרוזות אתה פשוט צריך מערך דו מימדי. נראה לי שאתה יכול להניח מראש שכל מחרוזת היא בגודל מוגבל (נניח, שהמשתמש לא יקליד יותר מ-100 תווים)... אחרת צריך להתעסק עם הקצאות דינמיות.

שורה חדשה זה פשוט צמד התווים "r\n\" (בהנחה שאתה עובד בwindows. אם אתה בלינוקס אז זה רק התו 'n\').

פורסם
  • מחבר

הכוונה ל- a[5][5?

וידוע לי שלרדת שורה זה סלאש n , השאלה שלי היא בקובץ איך אני יודע שהוא ירד שורה?

פורסם

הכוונה ל- a[5][5?

כמעט, רק ש-[a[5][5 אומר שכל אחת מהמחרוזות היא באורך 4 לכל היותר.

וידוע לי שלרדת שורה זה סלאש n , השאלה שלי היא בקובץ איך אני יודע שהוא ירד שורה?

מה זאת אומרת? כשאתה קורא את הקובץ אתה בודק אם קראת את התו 'n\', ואם כן אז הייתה לך ירידת שורה.

פורסם
  • מחבר

הבנתי, תודה רבה.

(חשבתי שיש פנוקצית Eol כמו Eof...)

char a[6][6];

עוד שאלה:

הפונק' fputc עובדת גם עם מערך דו מימדי?

פורסם

fputc? היא יודעת לקבל רק char אחד. אתה בטוח שאתה לא מתכוון ל-fputs או fwrite?

ולא הבנתי מה רצית לומר ב-[a[6][6.

פורסם
  • מחבר

סליחה, התכוונתי ל- fputs. והאם זה נכון char a[6][6]?

פורסם

בשביל להחזיק מחרוזת של 100 תווים (לדוגמה) אתה צריך מערך בגודל 101. אתה יצרת מערך דו מימדי בגודל 6 על 6 (שזה שווה ל-6 מערכים בגודל 6). עכשיו תגיד לי אתה אם זה מתאים.

פורסם
  • מחבר

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

פורסם

כמו שאמרתי, תניח בינתיים שאתה יודע שהמחרוזות מוגבלות לגודל סביר (כמו שאמרתי, 100).

פורסם
  • מחבר

אז בעצם אני צריך 6 על 101? (6 צד שמאל)

מה לגבי fputs היא מסתדרת עם מערך דו מימדי?

פורסם
  • מחבר

מהרגל של להשאיר מקום לבלאקסלאש נל.

לפי הכתוב, לא כתוב שהיא לא למערך דו מימדי, אז אני מניח שכן.

פורסם

גם לא כתוב שהיא מציירת עיגולים על המסך, אז אתה מניח שכן?

הפונקציה יודעת לקבל מחרוזת, שזה מערך חד מימדי. אם תנסה להעביר לה מערך דו מימדי זה פשוט לא יתקמפל.

פורסם
  • מחבר

.....

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

ארכיון

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

דיונים חדשים