עזרה בC

פירמה 1

New member
עזרה בC../images/Emo53.gif

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

gmorph

New member
מה יש לך כבר?

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

gmorph

New member
מה יש לך כבר?

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

פירמה 1

New member
הקוד שלי די ארוך..

ולא ממש תורם לעניין. בעיקר בדיקות תקינות קלט/פלט. אבל המבנה שלו בערך ככה: do } (scanf("%s",&str תנאים שונים.. (printf("%s",str בלה בלה while{ מה שאני צריך זה רעיון איך להתעסק עם הסדר שבהם המחרוזות מודפסות למסך
 

annefan

New member
אני מניח שזה חשוב

(זה הרי שיעורי בית...) אבל בוא נחשוב מה אתה צריך לעשות: 1. לקלוט את כל המחרוזת של המילים. (scanf היא פונקציה בעייתית מבחינת אבטחת תוכנה, אבל בתור התחלה היא בסדר). 2. להפוך את סדר המלים במחרוזת. 3. להדפיס את המחרוזת עם סדר המלים ההפוך (למה puts ולא printf אני לא יודע, אבל שיהיה). אוקי? 1 ו-3 אתה יודע לעשות אני מניח. מה עם 2? מה צריך לעשות כדי להפוך סדר מלים במחרוזת? 2א. לחלק את המחרוזת למילים. 2ב. להפוך את הסדר שלהן. יותר מפורט: 2א-1 - לחלק את המחרוזת למלים (חפש על strtok או strsep). 2א-2 - להעתיק כל מילה למערך של מחרוזות (malloc ו-free לענייני הקצאות זכרון, ו-strcpy ו-strncpy לענייני העתקת מחרוזות). 2ב-1 - להעתיק כל אחד מאברי המערך, בסדר הפוך למחרוזת חדשה. בסדר? זה נקרא top-down design. יש לך משימה ואתה הולך ומחלק אותה לתתי משימות, עד שכל שורה מייצגת שורה בקוד. בהצלחה!
 

פירמה 1

New member
אבל אתה לא יודע

כמה מילים המשתשמש יכניס אז ככה שאתה לא יודע כמה להקצות בזיכרון ולאן לשלוח כל מילה ?m i wrong
 

annefan

New member
ובענייני זכרון

מה למדתם? על הקצאות דינמיות? לגבי strtok ו-strsep תחפש עליהם ב-man או באינטרנט או בספר על C.
 

פירמה 1

New member
קודם כל..

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

פירמה 1

New member
אוקי הצלחתי לפתור

פשוט היה צריך לעשות []typedef char str ואז אפשר לעשות מערך של מערכים ובתוכו קל כבר לשנות את סדר המערכים..
 
למעלה