求教为何这个程序Vc6.0无报错无警告,而运行后程序就崩溃
求教为什么这个程序Vc6.0无报错无警告,而运行后程序就崩溃
------解决方案--------------------
主函数的for循环判断条件有问题,可以改成for (p = array; *p->gamename != '\0'; p++)
否则条件一直为真,指针p会指到不能访问的区域。
p->gamename 是一个字符指针。
*p->gamename 是字符数组的首元素。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN sizeof(struct Game)
struct Game //声明种类
{
char gamename[99];
char gameclass[99];
char gametype1[99];
struct Game *next;
}*p,*head,*o,*n,*t,
array[] = //初始化种类
{
{"dioblo","ARPG","A"},
{"biohazard","ACT","B"},
{"redalert","RTS","C"}
};
int i,j=0;
void create(void)
{
if (j==0)
{
o=n=(struct Game *)malloc(LEN);
*n = *p;
head = n;
}
else
{
n=(struct Game *)malloc(LEN);
*n = *p;
o->next = n;
*o = *n;
o->next = NULL;
}
j++;
}
int main(void)
{
char userinput[99]; //定义用于存储用户输入数据的字符数组
struct Game temp[99];
printf("please enter keyword(s):"); //提示用户输入的格式
scanf("%s",userinput); //第一个输入的字符串
for (p = array; p->gamename != '\0'; p++)
{
if (!(strcmp(userinput,p->gameclass)))
create();
if (!(strcmp(userinput,p->gametype1)))
create();
}
t = head;
while (t != NULL)
{
printf("%s",t->gamename);
t = t->next;
}
return 0;
}
VC
struct
C
------解决方案--------------------
主函数的for循环判断条件有问题,可以改成for (p = array; *p->gamename != '\0'; p++)
否则条件一直为真,指针p会指到不能访问的区域。
p->gamename 是一个字符指针。
*p->gamename 是字符数组的首元素。