עבור לתוכן

פתיחת קבצים בשפת C

Featured Replies

פורסם

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

מי שלא הבין בקצרה אני צריך פקודה לפתוח תמונה לדוגמא או כל סוג קובץ אחר

פורסם

קודם כל, צריך לזכור שמבחינת המחשב, כל הקבצים הם אותו הדבר - רצף של ביטים שיושבים בזכרון. מהבחינה הזו אין הבדל בין קובץ תמונה וקובץ טקסט - כל ההבדל הוא בקידוד של התוכן שלהם.

החבילה הסטנדרטית של C מספקת מעט מאוד יכולות. מבחינת קבצים, כל מה שהיא מאפשרת זה לפתוח את הקובץ ולקרוא את התוכן ה"נא" (raw) שלו. אין שום דרך מובנית בשפה לזהות איזה מין תוכן הקובץ מכיל - אם זה קובץ טקסט, תמונה, מסמך וורד או קובץ מוסיקה. בשביל זה צריך חבילה שיודעת לפתוח קבצים מהפורמט המתאים (מה שחבילה כזו עושה הוא בעצם לפתוח את הקובץ באמצעות fopen ואז לפרש את התוכן הבינארי שלו כתמונה).

חוץ מזה, נניח שפתחת קובץ jpg... מה תעשה איתו? אתה צריך הרי להציג אותו איכשהו, לא? אז בשביל זה אתה צריך יכולות גרפיות - שהן גם לא משהו מובנה בשפה, אלא צריכות להיות מסופקות על ידי הסביבה שבה רצה התוכנה (לדוגמה ע"י windows או ע"י ממשק ה-X11 של לינוקס).

פורסם
  • מחבר

אז אתה אומר שיש עוד הרבה ללמוד ועם אני רוצה שתמונה תיפתח אני צריך ללמוד טיפה על גרפיקה(על ספריית DirectX וכאלה)?

פורסם

fopen היא פקודה כללית לפתיחת קבצים שמאפשרת קריאה / כתיבה תו-תו (בין אם במצב טקסט או בין אם במצב בינארי) או בבלוקים (במצב בינארי). fopen לא מכירה פורמטים ולא יודעת לפענח / לפרש את המידה בקובץ.

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

אין שום דבר מובנה בספרייה של C שעושה זאת, אך יש המון ספריות שאנשים כתבו. בטח ובטח שלא צריך לכתוב דבר מאפס בשביל משהו כל-כך פופולרי וחרוש כמו JPEG. חפש באינטרנט.

פורסם

אז אתה אומר שיש עוד הרבה ללמוד ועם אני רוצה שתמונה תיפתח אני צריך ללמוד טיפה על גרפיקה(על ספריית DirectX וכאלה)?

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

בכל מקרה פיתוח אפליקציות גרפיות ב-C זה לא הכי נוח, והרבה יותר קל לעשות את זה בשפות מתקדמות יותר כמו Java או #C.

פורסם
  • מחבר

נתתי לדוגמא תמונה אבל כל קובץ שיפתח עם תוכנת ברירת המחדל שלו רק שיפתח

הסתדרתי השתמשתי בפקודה system מstdlib

אבל אני רוצה להבין את הנושא יותר משהו יכול להגיד לי איך קוראים לנושא משהו שיהיה לי מה לחפש?

פורסם

אוקי, עכשיו זה קצת יותר ברור.

מה שהפקודה system עושה זה פשוט "להפעיל" את הפקודה שנתת לה. אם הפקודה היא קובץ תוכנה (exe) אז היא מריצה אותה. אם הפקודה היא קובץ jpg, לדוגמה, אז מערכת ההפעלה פשוט מריצה את התוכנה שמוגדרת כתוכנה שאחראית לפתיחת jpg. אין ממש יותר מזה לדעת.

ארכיון

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

דיונים חדשים