Почему выход имеет x+48 (x - каждый элемент в строке) в данной программе C для замены страницы FIFO?
Почему выход имеет x+48 (x - каждый элемент в строке) в данной программе C для замены страницы FIFO?
Что я уже пробовал:
#include<stdio.h> int n; char pg[]="70120304230321201701"; void main() { int i,len,f,r,s,count,flag,num,psize; int fr[10]; f=0; r=0; s=0; flag=0; count=0; for(len=0;pg[len]!='\0';len++) n++; printf("The length of the string is %d",n); printf("\nEnter size of page frame:"); scanf("%d",&psize); for(i=0;i<psize;i++) { fr[i]=0; } while(s<n) { flag=0; num=pg[s]; for(i=0;i<psize;i++) { if(num==fr[i]) { s++; flag=1; break; } } if(flag==0) { if(r<psize) { fr[r]=pg[s]; r++; s++; count++; } else { if(f<psize) { fr[f]=pg[s]; s++; f++; count++; } else f=0; } } printf("\n"); for(i=0;i<psize;i++) { printf("%d\t",fr[i]); } } printf("\nPage Faults=%d",count); getchar(); }
[no name]
Пора научиться пользоваться отладчиком.
Rick York
Я не собираюсь отлаживать ваш код для вас, потому что это не поможет вам ничему научиться. Я удивлен, что ваш компилятор не выдал предупреждающего сообщения. Вы должны установить его на очень низком уровне. Я всегда ставлю свой на 4, самый высокий, для кода,который я написал или принимаю. Несмотря на это, на первой странице списка кода я вижу одну проблему, которая несколько маскируется неправильным уровнем отступа: переменная n используется и не инициализируется.
Это поднимает одну из моих любимых обид. Во-первых, я стараюсь избегать использования глобальных переменных, потому что они могут вызвать всевозможные головные боли, особенно в многопоточных приложениях. Когда я действительно использую их, я, как минимум, всегда пишу заглавную букву переменной. Часто я оборачиваю их в пространство имен, обычно называемое глобальным. Конечно, пространства имен недоступны в языке Си, но вы можете приблизить их к структуре, называемой глобальной. В любом случае, " n " - это самое худшее имя, которое можно выбрать для глобальной переменной.