שאלה בC

  • פותח הנושא dr15
  • פורסם בתאריך

dr15

New member
שאלה בC

אני מנסה ללמוד C ממדריכים באינטרט, ורציתי להתעמק קצת יותר בarray כי לא כל כך הבנתי את זה, אז "כתבתי"(הקוד כבר היה פחות או יותר כתוב, מה שניסיתי לעשות היה שהמשתמש יכניס את המספרים במקום מה שהיה בקוד המקורי שהתוכנה יצרה אותם) את הקוד הבא: #include <stdio.h> #define MAX 4 int a[MAX]; int x, y, i, t; int main() { printf("This program will sort 5 values you insert from the smallest to the largest\n"); for (i=0; i<MAX; i++) { printf("Enter a number[%d]\n", i+1); scanf("%d\n", a); } for (x=0; x<MAX-1; x++) for (y=0; y<MAX-x-1; y++) if (a[y]>a[y+1]) { t = a[y]; a[y] = a[y+1]; a[y+1] = t; } printf("************************************\n"); for (i=0; i<MAX; i++) printf("%d\n", a); return 0; } (הקוד לא כל כך קריא ככה, אז אני אוסיף את הקובץ) בכל מקרה, הבעיה היא: שהתוכנה נתקעת באמצע, כלומר הקומפיילר לא מצא שום בעיה בקוד ויצר קובץ EXE, אבל אחרי שמפעילים את הקובץ ומכניסים את הערך הראשון זה פשוט נתקע. ווינדוז אומר לי שהיה 0x00000005, בבדיקה מהירה באינטרנט כתוב: Bug Check 0x5: INVALID_PROCESS_ATTACH_ATTEMPT The INVALID_PROCESS_ATTACH_ATTEMPT bug check has a value of 0x00000005. This bug check appears very infrequently. אז מה עשיתי לא בסדר? ואיך אפשר לכתוב את הקוד כך שהוא יעשה את אותו הדבר ולא יתקע?
 

dr15

New member
וקובץ EXE סתם בשביל הכיף

תשנו את הסיומת לexe
 

vinney

Well-known member
חיפשת באינטרנט את הדבר הלא נכון

שגיאה 0x5 בהקשר זה זה חריגת זכרון. היא נובעת מהשורה הזאת:
scanf("%d\n", a);

כמו שאתה רואה, אתה מעביר ל scanf את הערך של האיבר הi במערך a, במקום להעביר את הכתובת של האיבר (עם סימן &).
 

dr15

New member
תודה רבה../images/Emo70.gif../images/Emo70.gif../images/Emo70.gif../images/Emo22.gif

אני לא מאמינה שלא שמתי לב, תודה רבה. אני אלמד להיות זהירה, ופחות להאשים את הקומפיילר
 
למעלה