12-01-2011, 01:30
|
|
|
|
חבר מתאריך: 21.12.04
הודעות: 30,021
|
|
אתה צריך כמה דברים.
1. לפתוח קובץ טקסט.
לצורך זה יש לפתוח ערוץ לקובץ (שזה בתאכלס מצביע לקובץ).
יש להשתמש בפונקציה fopen לצורך המטרה:
קוד PHP:
FILE* file = fopen ("myFile.txt", "r");
אם הקובץ קיים וניתן לקריאה, המשתנה (מצביע לקובץ) יקבל ערך כלשהו. במידה ולא הצלחת לפתוח את הקובץ (כי הוא לא קיים בנתיב שהגדרת, או שהוא לא ניתן לפתיחה [למשל, הוא חסום ע"י המערכת כי תוכנית אחרת פתחה אותו כבר לקריאה]) המצביע יקבל את הערך NULL. יש לבדוק לפני המשך התוכנית, שאכן הצלחת לפתוח את הקובץ לקריאה.
2. קריאת המידע מהקובץ
לצורך זה ישנן מספר פונקציות שיאפשרו לך לסרוק את הקובץ ולאחסן את המידע שבו לתוך משתנים (כמו מערך דו-מימדי).
פונקציה אחת מאוד נוחה היא fscanf (כפי שהמליץ דוד למעלה).
היא טובה במידה ואתה יודע מראש את הפורמט של הקובץ (כלומר, את סדר הופעת המידע בו).
למשל, נניח ומדובר בקובץ אשר מכיל טבלה של מספרים המופרדים זה מזה באמצעות TABs ובכל שורה יש 5 עמודות של נתונים מספריים בלבד.
הסריקה באמצעות fscanf תראה משהו כזה:
קוד PHP:
fscanf ("%d \t %d \t %d \t %d \t %d", &var1, &var2, &var3, &var4, &var5);
דרך טיפה יותר נורמלית לעשות את זה, תהיה ע"י שימוש בלולאה מקוננת (כלומר, לולאה בתוך לולאה).
הלולאה הראשונה תרוץ על השורות, והלולאה השניה על העמודות בכל שורה.
קוד PHP:
for (i = 0 ; !feof(file) ; i++) { for (j = 0 ; j < 5 ; j++) { fscanf("%d", &matrix[i][j]) /* scan the number to the array */ fscanf("%c", &temp; /* scan the delimiter to move the pointer to the next number */ } }
הפונקציה feof תוודה שלא הגעת לתו eof אשר מסמן סוף קובץ.
המשתנה temp הוא סתם משתנה מסוג char שלתוכו נסרוק את התו המפריד בין המספרים (בין אם זה רווח בודד, טאב, פסיק, נקודה, מקף...).
אני לא קימפלתי ובדקתי את הקוד שלי, אני מקווה שהוא נכון כפי שהוא, וגם אם לא, אז זה יתן לך בערך את הכיוון.
בהצלחה!
נערך לאחרונה ע"י Narxx בתאריך 12-01-2011 בשעה 01:33.
|