问题描述
- TC2.0下运行,编译链接没错,但是运行没有结果。求高人指点。
-
将内存0:0处的3000个数据当作375个struct stu型数据,将他们的c,os,masm,java数据项拷贝到数组a的对应数据项中,查找数组a总分在200到400之间的数据,用next连起来,并且打印。
#define NULL 0
char *n;
char *m;
int x,y;
char temp;
int i;
struct stu{unsigned char c; unsigned char os; unsigned char masm; unsigned char java; struct stu far * next;
};
void memcopy(void *destaddr,void *srcaddr,int len)//参考memcpy函数。
{
char dest=destaddr;
char const* src=srcaddr;
while(len-->0)
{
*dest++ = *src++;
}
return destaddr;
}int compare(struct stu *a)
{
unsigned int sum;
sum=a->c+a->os+a->masm+a->java;
if( sum>200&&sum<400) return sum;
else return 0;
}int main()
{
struct stu a[375],*head,*p;
memcopy(a,(void*)0x0000,3000);head=&a[0]; for(temp=0;temp<375;temp++) { a[temp].next=&a[temp+1]; } a[374].next=NULL; i=0; for(p=head;p!=NULL;p++) { if(compare(p)){ printf("a[%d]:%dnn",i,compare(p)); getch(); } p=p->next; i++; }
解决方案
TC2.0下运行,你具体是在 DOS 下运行呢?还是在 Windows 下运行呢?
如果是在 Windows 下运行,是不可能获取到你想要的信息。因为 Windows 已经不允许一般程序直接访问内存地址,特别是 0 等特殊的、系统的内存地址。
解决方案二:
用dosbox去运行turbo c。
时间: 2024-10-31 00:18:15