16-08-2009, 20:49
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
Cpp: העברת מערך כפרמטר בלי אתחול משתנה + הפונקציה sprintf
העברת מערך כפרמטר בלי אתחול משתנה:
אני מחפש לבצע משהו כזה:
קוד:
some_func( {0x01, 0x50, 0x41} );
במקום שאצטרך לעשות:
קוד:
char data[3] = {0x01, 0x50, 0x41} ;
some_func(data);
אמנם ב-2 הקודים הנ"ל מועבר סוג מידע שונה, אחד מערך והאחר מצביע למערך מסוג char בגודל 3, אבל אני מקוה שהעיקרון מובן. סה"כ להעביר את המידע, לא אכפת לי איך...
אפשרי?
הפונקציה sprintf:
נניח יש לי את הקוד הבא:
קוד:
float num1, num2;
char *str;
while(1)
{
my_func(&num1, &num2);
sprintf(str, "Hi %5.2f World %5.2f !", num1, num2);
puts(str);
my_delay();
}
האם הוא בעייתי? משהו בו בוצע לא נכון?
אני יודע שצריך להקצות ל-str זיכרון, אבל בהרצה\איטרציה הראשונה של הקוד לא היו בעיות, וגם אאל"ט יש הקצאה אוטומטית במצב הנ"ל(?). באיטרציה השניה התוכנית הופסקה בגלל כנראה אחד מהבאים:
כניסה לכתובת לא מוגדרת.
כניסה לכתובת לא מיושרת (misaligned address).
וזה קורה בפונקציה sprintf. אבל שוב לא יודע למה...
תודה מראש.
נערך לאחרונה ע"י dorM בתאריך 16-08-2009 בשעה 20:54.
|