פונקצית ספריה בC - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

פונקצית ספריה בC


orninyo

Recommended Posts

כן אבל הבעיה שהיא מקבלת סטרינג והPK שלי הוא long וזה יהיה סיפור לשנות אותו.

לא נורא נממש :-\

תודה.

אם כבר יש לך מספר ולא מחרוזת, למה ביקשת פונקציה שבודקת אם מחרוזת היאר מספר?

קישור לתוכן
שתף באתרים אחרים

כי אני קולט עם scanf אל תוך משתנה long

הבעיה שזה לא מונע ממני לקלוט אליו גם אותיות וכל מיני תוים שלא קשורים למספרים.

ואני רוצה לבדוק אם באמת הכניסו מספרים ולא חירבוש.

קישור לתוכן
שתף באתרים אחרים

אז תשתמש ב-strtol במקום ב-scanf.

עוד אופציה זה לקלוט ב-scanf עם שתי שדות:


int x;
char really_big_line[1000];
int num_read = scanf( "%d%s", &x, really_big_line );
if (( num_read == 0 ) || (strcmp(really_big_line, "") != 0) )
return -1; // error

// do whatever with num_read

שים לב שהפתרון הזה הוא hack, הוא לא רובוסטי, וסובל מבעייה של buffer overrun.

קישור לתוכן
שתף באתרים אחרים

החיים קשים.

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

בתור שירות לציבור: http://www.rt.com/man/strtol.3.html

קישור לתוכן
שתף באתרים אחרים

אם אתה קולט long ב-scanf אז זה פשוט יתעלם מכל תו שאינו מספר

ובסופו של דבר ב-long יהיה לך רק מספר

אם אתה רוצה לבדוק תקינות אתה צריך לקלוט לתוך char*, לבדוק על זה תקינות ולהמיר ל-long

קישור לתוכן
שתף באתרים אחרים

החיים קשים.

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

בתור שירות לציבור: http://www.rt.com/man/strtol.3.html

תודה על השרות - :xyxthumbs:

הציבור

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...