פורסם 2007 בדצמבר 1117 שנים אני הולך לפי הספר ויש לי את הקוד הזה : #include <stdio.h> int main (void){ int a, b, sum; printf ("PLEASE ENTER THE FIRST NUMBER"); scanf("%b", &a); printf ("PLEASE ENTER THE SECOND NUMBER"); scanf("%b", &b); sum = a + b; printf("THE AMOUNT OF %b AND %b is %b", sum ,a, b); getchar(); return 0;}איך שאני מריץ ולוחץ אנטר אחרי שאני מכניס את המספר הראשון החלון דוס נעלם לי.למה זה ומה לא עשיתי טוב ?
פורסם 2007 בדצמבר 1117 שנים מחבר צודק אבל עכשיו אחרי שאני מכניס את המס' הראשון והשני מתי שהתוכנה אמורה להראות את התוצאה אז החלון נסגר.
פורסם 2007 בדצמבר 1117 שנים קרא ל-fflush לפני שאתה קורא ל-getchar.ולהבא, כשאתה כותב כאן קוד, השתמש בטג קוד (כפתור # למעלה) כדי שיוצג בצורה נורמלית.
פורסם 2007 בדצמבר 1117 שנים כשאתה מבקש מהמשתמש לכתוב מספר, אתה צריך להשתמש ב-d%, ככה: scanf("%d", &a);ולא ככה: scanf("%b", &a);
פורסם 2007 בדצמבר 1117 שנים מחבר כשאני עושה את זה הוא קופץ לי כשאני מקמפל ל-STDIO.H ומדגיש לי את השורה _CRTIMP int __cdecl fflush (FILE*);זה מה שרשמתי : #include <stdio.h>int main (void){ int a , b , c , sum; printf ("Please Enter The first Number\n"); scanf("%d", &a); printf ("Please Second The first Number\n"); scanf("%d", &b); printf ("Please Third The first Number\n"); scanf("%d", &c); sum = a * b * c; printf("The sum of %d %d and %b is %d", sum ,a,b,c);fflush();getchar();return 0;}וזה מה שקורה שאני מקמפל :http://img69.imageshack.us/img69/9388/90312375cm6.jpg
פורסם 2007 בדצמבר 1217 שנים מחבר אוקיי תודה זה הצליח לי אבל יש לי כמה שאלות.אני עובד לפי ספר ושם רשום בהתחלה לרשום#include <stdio.h>void main (void)ואם אני רושם ככה זה לא עובד לי.למה בדיוק ?ועוד משהו:אתם אמרתם לי לרשום בסוף:fflush();getchar();return 0;מה זה נותן ומה זה אומר ?
פורסם 2007 בדצמבר 1217 שנים בעקרוןvoid main (void){ fflush(); getchar(); return 0;}מה שאתה עושה כאן זה להגדיר פונקציה שנקראת main שלא מחזירה כלום (void לפני שם הפונקציה), אבל בסופה אתה כותב return 0 (מחזיר ערך מספרי). מה שיהיה נכון לעשות זה לשנות את ההגדרה לint main (void){
פורסם 2007 בדצמבר 1217 שנים הספר שלך מיושן ולא לפי התקן. לפי התקן של C, הפונקציה main חייבת להחזיר int, ולא יכולה להחזיר void. קומפיילרים חדשים יותר יסרבו לקמפל תוכנית כזו.לגבי ה-fflush - הפקודה הזו זורקת את כל המידע שנמצא בקלט.מה שקורה הוא ככה: שמת את ה-getchar על מנת שהתכנית לא תצא אחרי שהיא מדפיסה את התוצאה.כשעשית scanf, התכנית ביקשה לקרוא מספר מהמשתמש - אבל המשתמש מכניס מספר ואחריו enter (שהוא תו מיוחד בפני עצמו). ה-scanf קורא רק את המספר, וה-enter עדיין נשאר בקלט, מחכה להיקלט ע"י פקודת קלט נוספת.getchar בעצם עושה אחד משני דברים:אם יש משהו שמחכה בקלט, אז getchar ישר יקרא אותו וימשיך הלאה.אם אין משהו שמחכה בקלט, אז getchar יחכה עד שיהיה (ולכן ישהה את התכנית).כיוון שה-enter חיכה בקלט, getchar מיד קרא אותו והמשיך הלאה, במקום לחכות למשתמש להכניס קלט נוסף.מה ש-fflush עושה היא למחוק את המידע שבקלט. כשקראת לה, היא מחקה את ה-enter מהקלט, ואז ל-getchar לא היה שום מידע בקלט, והוא נאלץ לחכות לקלט נוסף.
פורסם 2007 בדצמבר 1217 שנים אתה מכיר אולי איזה מדריך טוב ועדכני לשפת C ברשת ? (אני מצטער פשוט לא רציתי לפתוח דיון חדש).
פורסם 2007 בדצמבר 1217 שנים מחבר עוד משהו:למה תמיד התוכנה אומרת לי שהמס' השני הוא הכי גדול ?#include <stdio.h>int main(void){ int a , b , c; printf("enter the first number : \n"); scanf("%d", &a); printf("enter the second number : \n"); scanf("%d", &b); printf("enter the third number : \n"); scanf("%d", &c); if (a > b) printf("the first number is bigger\n"); else if (a > c) printf("the first number is bigger\n"); else if (b > a) printf("the second number is bigger\n"); else if (b > c) printf("the second number is bigger\n"); else if (c > a) printf("the third number is bigger\n"); else if (c > b) printf("the third number is bigger\n"); else printf("all numbers equals\n"); fflush(stdin); getchar(); return 0;}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.