פורסם 2007 בנובמבר 2818 שנים אני יכול לתאר לעצמי שזו פונקציה שמחזירה תת מחרוזת אבל יעזור אם תפרטי קצת יותר, למשל האם היא מקבלת מחרוזת, אינדקס ומס' תווים או אינדקס של התו האחרון? האם ניסית משהו בעצמך ונתקעת?
פורסם 2007 בנובמבר 2818 שנים אם אתה שואל אותי didi18 התרגלה פשוט יותר מידיי לחיים הקלים שהפורום הזה מספק לה: בהתחלה עוד התאמצה והציגה פתרונות משלה שהיו בהן תקלות כדי להיעזר בחברי הפורום לתקנן. עם הזמן חסכה הצגת פתרונות משלה והחלה להציג בעיות עם בקשה לקבלת כיוון תוך כדי רמיזה מתמשכת במהלך כל דיון שפתרון בצורת קוד ייטב לה יותר מייעוץ והכוונה לדרך פתרון.הפעם החליטה לחסוך בכל התהליך הארוך ופשוט לקצר למינימום מילים, להציג בכנות מה היא בדיוק רוצה מימוש של הפונקציה Strsub תוך חסך ברמיזות מיותרות ובתהליך הארוך שבסופו של דבר ממילא מגיע לכדי תוצאה שמישהו כותב לה את הקוד המבוקש. אולם הפעם קצת הגזימה עם החסך במילים, שכן גם מי שיסכים להיענות לבקשה לא כל כך יכול להבין מה היא הייתה בדיוק...אבל העיקר ששמרה עדיין על מידת נימוס מסויימת "תודה :]", זה הרי היה יכול להיות "מימוש של הפונקציה Strsub, ושיהיה זריז כי יש לי עוד דברים לעשות היום!"אבל זה רק אם אתה שואל אותי...
פורסם 2007 בנובמבר 2918 שנים אין לי בעיה שאנשים ש"מרמים את השיטה" כי הם מרמים את עצמם בסופו של דבר. שיעתיקו חופשי ויתנו למישהו אחר לעשות שיעורי בית כי בסוף המבחנים בתיכנות לרוב לא מבוססים על שינון אלא על יכולת תיכנות . ואם הבנתי נכון אז זה פונקציה פשוטה מדי שמישהו ישבור את הראש. זה בודק אם אתה יודע להשתמש ב for loop בc ואם אתה יודע לעשות חשבון פשוט של חישוב אורך ואם אתה יודע להגן על עצמך מפני input לא חוקי. רמז מספיק?
פורסם 2007 בנובמבר 2918 שנים כמו שנאמר כאן, הפונקציה פשוטה: בודקת שהקלט (של האינדקס ומס' התווים / אינדקס של התו האחרון) תקין, מקצה מערך באורך של מס' התווים + 1 (בשביל ה '\0'), מעתיקה בלולאה את התווים מהמחרוזת המקורים לחדשה ומציבה '\0' בסוף.תנסי, תעלי לפה את מה שניסית ונעזור לך.
פורסם 2007 בנובמבר 2918 שנים Niseg, אני לא חושב שירדת לסוף דעתי. אין לי בעיה עם, איך כינית את זה, "אנשים שמרמים את עצמם". המטרה ממש לא הייתה להעביר ביקורת או משהו בסגנון, להיפך הערכתי את זה שסוף סוף didi18 נהגה בכנות והציגה ישירות את רצונה:הפעם החליטה לחסוך בכל התהליך הארוך ופשוט לקצר למינימום מילים, להציג בכנות מה היא בדיוק רוצהבמקום ללכת סחור סחור, ולעכב את התהליך כולו.אולם בחרתי להכניס מעט הומור בהודעה, שכנראה לא בהכרח מתפרשת כך, ועל כן הבהרה זו.מטרת ההודעה, אם כן, הייתה מעט הומור, ולבסוף גם להבין מה בדיוק הפונקציה שביקשה לה מימוש אמורה לעשות.בכל אופן, אם גם את, didi18, פירשת את ההודעה בתור ביקורת אז אל, הכל ברוח טובה, קצת ציניות אבל ממש בצחוק.ואם לחזור לבקשתך המקורית, אני מאמין שהבהרה נוספת לגביה, עתידה לספק לך גם את הפיתרון. נראה כי יש מספיק אנשים כאן, שרק לצורך הפגת השיעמום (כן, לפעמים גם אני) יקדישו 5 דקות גם אם כדי לממש את הפונקציה הנ"ל.
פורסם 2007 בדצמבר 318 שנים מחבר אם אתה שואל אותי didi18 התרגלה פשוט יותר מידיי לחיים הקלים שהפורום הזה מספק לה: בהתחלה עוד התאמצה והציגה פתרונות משלה שהיו בהן תקלות כדי להיעזר בחברי הפורום לתקנן. עם הזמן חסכה הצגת פתרונות משלה והחלה להציג בעיות עם בקשה לקבלת כיוון תוך כדי רמיזה מתמשכת במהלך כל דיון שפתרון בצורת קוד ייטב לה יותר מייעוץ והכוונה לדרך פתרון.הפעם החליטה לחסוך בכל התהליך הארוך ופשוט לקצר למינימום מילים, להציג בכנות מה היא בדיוק רוצה תוך חסך ברמיזות מיותרות ובתהליך הארוך שבסופו של דבר ממילא מגיע לכדי תוצאה שמישהו כותב לה את הקוד המבוקש. אולם הפעם קצת הגזימה עם החסך במילים, שכן גם מי שיסכים להיענות לבקשה לא כל כך יכול להבין מה היא הייתה בדיוק...אבל העיקר ששמרה עדיין על מידת נימוס מסויימת "תודה :]", זה הרי היה יכול להיות "מימוש של הפונקציה Strsub, ושיהיה זריז כי יש לי עוד דברים לעשות היום!"אבל זה רק אם אתה שואל אותי...טוב שלא הגזמתם....ביקשתי מימוש של פונקציה לא קיימת בכלל יש פונקציה substrלא מה שאני חשבתי שקיים..פשוט ראיתי שימוש בפונקציה שלא קיימת ולא הבנתי למה אני לא מוצאת באינטרנט את המימוש אז חשבתי שאתם תוכלו לעזור לי... זה הכלואין פה קטע של שיעורי בית... אני סיימתי ללמוד ביצפר
פורסם 2007 בדצמבר 318 שנים הבעיה היא פשוט שלא מעט פעמים בפורום אנשים באים ומצפים שיפתרו להם את שיעורי הבית, עם פוסטים בסגנון של "צריך X דחוףףףףף למחר". אם זה לא המקרה אז אין בעיה (למרות שתיאור מפורט יותר של הבעיה מלכתחילה היה עוזר). אין פונקציה סטנדרטית כזו ב c אבל לפי השם שלה ניתן להסיק שהיא מחזירה תת מחרוזת מתוך מחרוזת (כנראה לפי אינדקס ואורך/אינדקס של התו האחרון). אם ראית שימוש בפונקציה עם השם הזה בקוד מסויים אז כנראה שהכותב של אותו הקוד כתב אותה. אם זה לשימוש חדש פעמי אין צורך לכתוב מחדש פונקציה שכזו: אפשר להשתמש בפונקציה strncpy שמקבלת מצביע למחרוזת (ה"מקור"), מס' תווים ומחרוזת "יעד" ומעתיקה את התווים למחרוזת היעד. אם את צריכה את זה לשימוש חוזר אפשר לעשות משהו כזה (לא בדקתי אם זה עובד): char* strsub(char* source, int starti, int count){ if(starti < 0 || count < 1) return NULL; int length = strlen(source); if((starti > length) || (starti+count) > length) return NULL; char* result = (char*) malloc(count+1); if (result==NULL) return NULL; strncpy(result, source+starti, count); result[count] = '\0'; return result;} רק לא לשכוח לשחרר את המחרוזת עם free אחרי שגמרת להשתמש בה.
פורסם 2007 בדצמבר 318 שנים 1) בIF השני, מספיק לבדוק - starti+count>length(הרי count>0).2) אתה חייב להכפיל את מספר הבתים שטתה מקצה ב- sizeof(char), אחרת תהייה טעות במערכות בה char הוא 2 בתים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.