האם יש בשפת c פונקציה כמו str בפסקל, שממירה מערך מספרי int, למחרוזת string? אם משהו יודע, מכיר, או בשרי ידידות עמוקים אם אותה פונקציה אשמח אם הוא, או היא, יכירו לי אותה... תודה מראש.
אין תחליף אמיתי והולם ל-snprintf עד כמה שידוע לי. יש הרבה פונקציות פירמוט טקסט, אבל נדמה לי שזו היחידה שבאמת אוכפת את מספר התווים המקסימלי שנכנס ל-BUFFER, אבל אולי לא ידוע לי על משהו אחר... אפשרי
שיש עוד פונציה שנקראת SPRINTF, והיא בעייתית כי היא מאפשרת גלישה מהמערך - ולא מבצעת בדיקה בנושא לגבי SNPRINTF - היא מכניסה את הערכים ומחזירה את מספר התווים שנכתבו לבאפר ללא ה "n/" בסוף אתה צריך לבצע בדיקה האם הוכנסו כל התווים או שבגלל גודל הבאפר - לא הכל הוכנס, ולטפל בזה
לגבי ITOA - אתה כמשתמש צריך לחשב כמה תווים אתה צריך כדי להעביר את המספרים לתווים וזו עבודה מיותרת, מה שנחסך ממך ב SPRINTF ו SNPRINTF לגבי SPRINTF - יש כמה וכמה הודעות לפני כן לגבי למה לא כדאי להשתמש בה ביחס ל SNPRINTF ובכלל...
אוקיי אז את ההמרה זה עושה בסדר, עכשיו אני מכניס את זה ל -Edit control, ואני לוקח את הנתונים מרשימה, לפני כל נתון חדש אני מוסיף "n\" כדי לרדת שורה, אבל באופן משונה למדי במקום לרדת שורה זה כותב לי את האות ´ב´ עם דגש (אני לא יודע אם זה דגש קל או כבד..
), ה- edit box היא מטיפוס CString. כל עזרה תתקבל בברכה...
ה- ב´ הזאת שאתה רואה זה הסימן \n שאתה מכניס בכל סוף שורה. זאת מכיון שב- properties של ה- edit box לא סימנת שייתמוך בריבוי שורות (multi-line). אם תסמן את האפופציה הזאת, תראה איך זה מסתדר.
לא מומלץ לעבוד עם atoi. עד כמה שזכור לי (לפחות ביוניקס) היא לא מטפלת במקרים מוזרים וכשהיא לא מצליחה היא מחזירה 0. זה לא מספיק טוב. אני מעדיף להשתמש ב-strtoul, ובדיקה פשוטה של המצביע שהיא מחזירה (אחד הארגומנטים זה מצביע למצביע
בין מערכות הפעלה שונות יש הבדל בתו (או שניים) שמסיים שורה. ביוניקסים ולינוקס (כמעט בכולם אם לא בכולם), התו הוא 0x0A הידוע בשם newline. תחת חלזונות, השילוב של 0x0A ו-0x0D הוא התו שמוריד לשורה חדשה. זה נקרא CRLF (פירוש: Carriage-return, Linefeed) וזה הסטנדרט עבור רוב הפרוטוקולים מבוססי רשת. בכל זאת מיקרוסופט החליטו ללכת עם זה ולא עם יוניקס (למרות שלדעתי יש מקום להבדיל בין פרוטוקולי רשת למסיים שורה במערכת ההפעלה).