我应该执行一个分配结构人员N字节内存的项目 并扫描f每个人的名字initial_money和一些其他变量 当我运行代码时,对我来说问题是它在接受输入过程的某个时刻终止,我不知道为什么 昨天在代码部队竞赛中我遇到了这个问题
#include <stdio.h>
#include <stdlib.h>
struct person
{
char name[15];
int initial_money;
int g;
int final_money;
int money;
};
int main()
{
int NP,i,j;
char target1[15];
scanf("%d",&NP);
struct person *p=malloc(NP*sizeof(struct person));
for(i=0;i<NP;i++)
{
scanf("%s",(p+i)->name);
}
for(i=0;i<NP;i++)
{
scanf("%s",target1);
for(j=0;j<NP;j++)
{
if((p+j)->name==target1)
{
scanf("%d%d",(p+j)->initial_money,(p+j)->g);
(p+j)->final_money=(p+j)->initial_money%(p+j)->g;
}
}
}
for(i=0;i<NP;i++)
{
printf("%s %d %d %d",(p+i)->name,(p+i)->initial_money,(p+i)->g,(p+i)->final_money);
}
return 0;
}
答案 0 :(得分:2)
scanf函数需要指向输入值的指针。 这一行:
scanf("%d%d",(p+j)->initial_money,(p+j)->g);
应该是:
scanf("%d %d",&(p+j)->initial_money,&(p+j)->g);
比较字符串时,您通常无法直接比较指针:
if((p+j)->name==target1)
应该是:
if(strcmp((p+j)->name, target1) == 0)