שאלה ב-C

HaRmosh

New member
שאלה ב-C

אני מנסה לסמן מקום כלשהו בקובץ exe. לשם כך כתבתי תוכנית שרצה עליו, וסורקת רצפים של 4 בתים כל פעם (עם תזוזה של בית קדימה בכל פעם, כלומר יש חפיפה בסריקה), שומרת אותם כמספרים ולאחר מכן נותנת לי את מספר כלשהו שלא הופיע בקובץ בצור שצויינה. את המספר אני מכניס למערך של unsigned char בצורה הבאה: 1. אני הופך את המספר מ-unsigned int, שגודלו 4 בתים (VS6, winX), לאוסף של 4 'ספרות' בבסיס 256. כל 'ספרה' כזו היא בגודל בית. 2. בקובץ קיים כבר מערך המוגדר כך:
volatile static unsigned char arr[4096]​
ואליו אני מכניס את ה'ספרה' הכי פחות משמעותית למקום ה-0 וכך הלאה, כל ספרה תופסת בית - כגודל unsigned char, איבר יחיד במערך. הבעיה היא כשלאחר קימפול מחדש, המס' שהכנסתי אמור להימצא בסריקה - מה שלא קורה. למישהו יש מושג מה אני עושה לא נכון, או הצעות לשיפור ?
 

temp13

New member
עוד פרטים

תראה את הקוד ששמור ואת הקוד שקורא מהקובץ, ואולי נוכל לעזור...
 

HaRmosh

New member
אין קוד ששומר, המשתמש

מכניס את המספר לקובץ ה-C ומקמפל אותו מחדש, וככה הוא נכנס לקובץ. בנוגע לקריאה, אני קורא כך:
fread(&var, 1, sizeof(unsigned int), filePtr);​
כלומר קורא כל פעם ארבעה בתים מהקובץ לתוך המשתנה מסוג int.
 
למעלה