פורסם 2012 ביוני 513 שנים הסתכלתי קצת בפורום... אני לא בטוח שהבנתי.קיבלתי קלט מהמשתמש, ואני מעוניין לפרק אותו.עדיף לי להכניס את הקלט לתוך מערך של char או ישירות לchar?ואיך בדיוק אני מפרק אותו לחלקים?לגבי ה strtok הפקודה הזאת בעצם מתעלמת ממה שאני רשום לה? כלומר strtok (command,","); bla bla בהנחה של command זה הקלט.תודה על עזרה
פורסם 2012 ביוני 513 שנים עדיף לי להכניס את הקלט לתוך מערך של char או ישירות לchar?מה זאת אומרת? char יכול להחזיק רק תו אחד, מערך של char יכול להחזיק הרבה תווים.הדרך הכי פשוטה היא אכן להשתמש ב-strtok. יש כאן הסבר על איך להשתמש בה כולל דוגמה. אתה מוזמן לנסות להשתמש בה בעצמך בתכנית ניסיון כדי לראות מה היא עושה בדיוק.לא הבנתי את השאלה האחרונה שלך. למה שהיא תתעלם מהקלט?נ.ב. בשביל לכתוב קוד בתוך הפורום, תשתמש בטג קוד (ליד הכפתור של ציטוט).
פורסם 2012 ביוני 513 שנים מחבר הסתכלתי כבר על הדוגמא הזאת, בגלל זה אני שואל כי אם תשים לב הם שמו את המחרוזת במערךchar str[]לכן אני שואל, אני גם מעוניין לשמור את המילה הראשונה במשתנה אחר, כיצד אני עושה את זה?
פורסם 2012 ביוני 513 שנים מחבר אני אהיה יותר ברור,הקלט שאני מקבל מהמשתמש אמור להיותread_set A,12,2,3,4,5,6ואני מעונין לשמור את המילה הראשונה במשתנה אחר.char temp[]=("%s/n",command)האם זאת הדרך?
פורסם 2012 ביוני 513 שנים מה אמור להביע הקוד שכתבת? זה אפילו לא מתקמפל.קראת על strtok - תשתמש בה. את התוצאה של strtok אתה יכול לשמור במשתנה.
פורסם 2012 ביוני 513 שנים מה עושה השורת קוד הזאת?pch = strtok (str," ,.-");השורה הזאת מבצעת את הדברים הבאים.1. מוצא את התו הראשון במחרוזת str שאיננו מהתוים "-., " שומר את כתובתו במשתנה p2. ממשיך לסרוק את המחרוזת str עד למציאת אחד מן התווים שבארגומנט השני "-., "3. כותבת לתוך המחרוזת str את התו '0\' במקום שהיא מצאה ב(2) שומר פנימית את הכתובת הזאת על מנת להמשיך לעשות parsing למחרוזת אבל עם פרמטר ראשון NULL4. מחזירה את התוצאה מ1 ושומרת אותו במשתנה pchככלל, אל תשתמש בstrtokהפונקציה הזאת חייבת לעבוד עם מחרוזות שאפשר לכתוב עליהן (היא כותבת את תו האפס בכל קריאה שלה) אם תקרא לה עם literal string התוכנית שלך עלולה לעוף.אי אפשר לקרוא לפונקציה הזאת משני נימים (ת'רדים) שונים בתוכנית כי עלולות להיות התנגשויות בגלל הערך הפנימי שנשמר בכל קריאה ואם יישמר משני נימים שונים התוצאות יהיו שגויות
פורסם 2012 ביוני 513 שנים מה עושה השורת קוד הזאת?pch = strtok (str," ,.-");אני מבין אז שלא קראת את התיעוד שנתתי לך, אלא רק הסתכלת על הדוגמא.הפונקציה הזאת חייבת לעבוד עם מחרוזות שאפשר לכתוב עליהן (היא כותבת את תו האפס בכל קריאה שלה) אם תקרא לה עם literal string התוכנית שלך עלולה לעוף.אי אפשר לקרוא לפונקציה הזאת משני נימים (ת'רדים) שונים בתוכנית כי עלולות להיות התנגשויות בגלל הערך הפנימי שנשמר בכל קריאה ואם יישמר משני נימים שונים התוצאות יהיו שגויותבעיקרון אתה צודק, אבל:א. צודק, אבל אם אתה עובד איתה נכון (לדוגמה אתה עובד רק עם מחרוזות שלא איכפת לך להרוס) אז זה לא נורא.ב. נכון, אבל בשביל תרגיל בסיסי ב-C זה בסדר. כשהוא יצטרך להתמודד עם ריבוי נימים הוא יוכל להשתמש בגרסה הבטוחה strtok_s.
פורסם 2012 ביוני 513 שנים מחבר תודה על ההסבר המעולה! בכל מקרה אם מישהו בעתיד יכנס לפוסט הזה אני ממליץ לו להסתכל פה:http://www.cplusplus.com/faq/sequences/strings/strtok/זה מוסבר מעולה
פורסם 2012 ביוני 513 שנים מחבר בכדי להוציא מזה את המספר עלי להשתמש ב atoi כדי להפוך אותו מ char ל int נכון?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.