ערכתי לאחרונה בתאריך 25.11.13 בשעה 12:20 בברכה, ShocKi
בהנחה שהבנתי נכון את כוונתך, זה פותר את הבעיה:
#include <stdio.h> #include <ctype.h>void main() { char x,y=NULL; scanf("%c.%c",&x,&y); flushall(); if (isdigit(x)>0) { if (y) if (isdigit(y)>0) printf("\n%c.%c",x,y); else printf("%c not a digit",y); else printf("\n%c",x);; } else printf("%c not a digit",x); }
|
אם לאחר מכן אתה צריך לעבוד עם הקלט כמספרים אז אפשר בקלות להמיר את זה ל INT או FLOAT רגיל.
שים לב שיש כאן הנחה שהצורת קלט היא תמיד x או x.y כאשר x,y הם תווים בודדים אם למשל יכניסו לך קלט 5g זה יתעלם מה g וימשיך רק עם ה 5.
אפשר כמובן להתגבר על זה ע"י כך שבמקום לכתוב
תכתוב
scanf("%c%c%c",&x,&a,&y);
|
ואז תעשה בדיקה שהתו האמצעי הוא נקודה, או לחילופין לקלוט מחרוזת אחת ולהתחיל לפרק אותה. אפשר גם לכתוב את כל הסינון קלט הזה בתנאי אחד של לולאת WHILE כמו מסננת קלט נורמלית.
קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.