פורסם 2009 בפברואר 1816 שנים אני תוהה לעצמי אם אני יכול לכתוב תוכנה שעושה את זה, והיות ואנחנו עוד לא למדנו מחרוזות אני נאלץ להיעזר במקורות חיצוניים לכל דבר שלא למדנו.מישהו מוכן לכוון אותי לכיוון הנכון של איך עושים את זה?
פורסם 2009 בפברואר 1816 שנים אם אתה רוצה לכתוב תוכנה שתפתח קובץ טקסט, תחפש בו מילה מסויימת ותדפיס את המיקום שלה בקובץ, אז באמת לא צריך לגעת במחרוזות.לקרוא קבצים למדת? כי מעבר לזה לא צריך לעשות הרבה.
פורסם 2009 בפברואר 1916 שנים אני לא מבין איך מצפים ממכם לכתוב תוכנה שקוראת מקובץ בלי ללמוד איך לקרוא מקובץ.או שפספסתי פה משהו.
פורסם 2009 בפברואר 1916 שנים מחבר הבנתי שfgets זה מה שאני צריך.איך בדיוק אני גורם לתוכנה לעבור על כל הקובץ (שמלא במילים, מילה בכל שורה) ולהשוות את הstring שיש לי איפשהו לאותה שורה?קראתי את זה: http://irc.essex.ac.uk/www.iota-six.co.uk/c/i2_feof_fgets_fread.asp, אבל אני עדיין לא מצליח להבין איך בדיוק זה עובד.
פורסם 2009 בפברואר 1916 שנים מה שהבנתי לפי העמוד הזה, זה שאתה קורא לפונקציה עם 3 ארגומנטים.1. שם של מערך (מן הסתם כדאי מחרוזת)2. מספר התוים שאתה רוצה לקרוא בכל שורה בבת אחת3.המצביע שמכיל את כתובת הקובץברגע שאתה קורא לפונקציה נגיד למערך שנקרא BBB, עם מספר של 10 תוים, נכנס למערך הזה 10 התוים הראשונים שיש בקובץ.כשתקרא לפונקציה שוב, ייקראו ה 10 הבאים בשורה, וכן הלאה.אז אתה כן צריך לדעת מערכים או מחרוזות בשביל לעבוד עם זה.
פורסם 2009 בפברואר 2016 שנים את האמת, אין לי שמץ. אבל ממש לא נראה לי.אולי בעזרת פונקציה אחרת שאני לא נתקלתי בה.
פורסם 2009 בפברואר 2016 שנים fgets נעצר כשהוא מגיע לסוף שורה. אתה יכול לבדוק אם התו האחרון שנקרא הוא תו סוף שורה ('n\'), ואם לא אז פשוט להמשיך לקרוא ל-fgets עד שהוא מגיע לסוף שורה (ולהתעלם מהתוצאה).שאלה קטנה: האם התוכנית צריכה לחפש גם מילים בתוך שורות, או רק להתאים מילה לשורה? לדוגמה, אם יש לך קובץ כזה:catdogbananaאז האם התוכנה צריכה להיות מסוגלת למצוא את הטקסט "nana"?
פורסם 2009 בפברואר 2016 שנים אז הנה שני פתרונות אפשריים, אחד בלי מחרוזות ואחד עם (שים לב שבכל מקרה אתה צריך מחרוזת כדי להחזיק את המילה שאתה מחפש, אבל זהו).בלי מחרוזות:קרא מהקובץ תו אחר תו באמצעות הפונקציה fgetc. כל פעם תשווה את התו שקראת לתו המתאים במחרוזת שאתה מחפש.אם יש התאמה, תמשיך לקרוא.אם אין התאמה, אז השורה לא מתאימה - אז תמשיך לקרוא ממנה (ותתעלם ממה שאתה קורא) עד שאתה מגיע לתו סוף שורה, על מנת לעבור לשורה הבאה.אם הגעת לסוף המילה שאתה מחפש, אבל עדיין לא הגעת לסוף השורה בתוך הקובץ זה אומר שהשורה לא מתאימה - אז תעבור שום לשורה הבאה.אם הגעת לסוף השורה, אבל לא הגעת לסוף המילה, אז השורה לא מתאימה, ופשוט תמשיך הלאה (אין צורך להמשיך לקרוא עד סוף השורה, כי אתה כבר שם).וכמובן אם הגעת לסוף השורה ולסוף המחרוזת ביחד, זה אומר שהשורה מתאימה למילה וזה מה שרצית.עם מחרוזות:תחזיק מחרוזת נוספת שכל פעם תקרא לתוכה (אורך המחרוזת צריך להיות כאורך המילה שאתה מחפש).קרא כל פעם שורה לתוך המחרוזת (באמצעות fgets), ואז תשווה בין שתי המחרוזות עם strcmp. אם יש התאמה סבבה, אם לא אז תעבור לשורה הבאה (באמצעות קריאות ל-fgets או באמצעות fgetc כמו קודם), וזהו.
פורסם 2009 בפברואר 2016 שנים מחבר נניח וקראתי לתוך המחזורת temp שלי משהו ועוד נשאר לשורה כמה אותיות, מה הקוד שאני צריך כדי לדלג הלאה?
פורסם 2009 בפברואר 2016 שנים while (fgetc(file) != '\n' && !feof(file));הלולאה כל פעם קוראת תו, ועוצרת ברגע שמגיעים לסוף שורה או לסוף הקובץ (זה ה-feof).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.