עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

פורסם

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

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

פורסם

לא קיימת כזו פונקציה, אבל זה לא אמור להיות מסובך לממש כזו בעצמך.

פורסם

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

פורסם
  • מחבר

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

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

תודה.

פורסם

כן אבל הבעיה שהיא מקבלת סטרינג וה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 מקבלת צאר, לא long

אני קולט לlong (לשנות לצאר זה יהיה סיפור מהפטרה)

פורסם

החיים קשים.

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

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

פורסם

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

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

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

פורסם
  • מחבר

אז אם אני קולט לa

12df343

a יהיה שווה ל12343 ?

פורסם

החיים קשים.

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

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

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

הציבור

פורסם

אז אם אני קולט לa

12df343

a יהיה שווה ל12343 ?

לא, הוא אמור להעצר בתו שאינו מספר (a יהיה 12).

פורסם
  • מחבר

אוקי, תודה.

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.