Em có bài tập về đổi địa chỉ ảo thành địa chỉ vật lý, em đã chạy thành công trên win nhưng khi đưa code và Ubuntu thì nó lại bị lập ở dòng cuối cùng (“Can not find the physical address of 1751”) @@. Mọi người có thể giải thích với em nguyên nhân được không ạ.
#include <stdio.h>
#include <malloc.h>
#include <math.h>
void translate_physical_address( long dec, long index[] ){
long integer_part, remainder_part, dec_physical_address;
integer_part = dec / 128;
remainder_part = dec % 128;
if (integer_part >= 0 && integer_part <= 6){
dec_physical_address = index[integer_part] * 128 + remainder_part;
printf("Physical address of %ld: %ld\n", dec, dec_physical_address);
}else
printf("Can not find the physical address of %ld\n", dec);
}
int main() {
long dec, index[7] = { 6, 5, 4, 2, 7, 3, 1 };
FILE *f;
char filename[20];
printf("Enter the name of file: ");
scanf("%s",filename);
f = fopen(filename, "r");
while (!feof(f)){
fscanf(f, "%ld", &dec);
translate_physical_address(dec, index);
}
return 0;
}
Kết quả khi chạy trên win
Kết quả khi chạy trên linux