如何在c语言的结构中使用if条件
我想在结构中存储名称id。然后我想把它们打印出来。条件是如果结构中没有存储数据,则打印“无数据”。但在这种情况下我不能这么做如何在c语言的结构中使用if条件,c,conditional-statements,structure,C,Conditional Statements,Structure,我想在结构中存储名称id。然后我想把它们打印出来。条件是如果结构中没有存储数据,则打印“无数据”。但在这种情况下我不能这么做 #include<stdio.h> struct store { char name[100]; int id[50]; } info[100]; int main() { int i=0; printf("Enter your name\n"); scanf("%s",inf
#include<stdio.h>
struct store
{
char name[100];
int id[50];
} info[100];
int main()
{
int i=0;
printf("Enter your name\n");
scanf("%s",info[i].name);
printf("Enter your ID\n");
scanf("%d",info[i].id);
if(info.name[i]!='\0')
{
printf("%s",info[i].name);
}
else
{
printf("No data found");
}
}
#包括
结构存储
{
字符名[100];
int-id[50];
}信息[100];
int main()
{
int i=0;
printf(“输入您的姓名”);
scanf(“%s”,信息[i]。名称);
printf(“输入您的ID\n”);
scanf(“%d”,信息[i].id);
如果(信息名称[i]!='\0')
{
printf(“%s”,信息[i]。名称);
}
其他的
{
printf(“未找到数据”);
}
}
当您仅以数组名称引用数组时,它会衰减为指向其第一个元素的指针。因此,info.name
不会编译,它需要是info->name
。但是,除了您的if
语句之外,您在任何地方都使用info[i].name
来访问索引i
处特定元素的name
,这很好,但是您在if
语句中使用info.name[i]
,这很不好。看到区别了吗?要访问特定元素的名称的第一个字符,需要使用info[i].name[0]
另外,您将id
字段声明为int
s的数组,但实际上只需要1int
此外,在用数据填充数组之前,您不会初始化info
数组
请尝试类似以下内容:
#包括
#包括
结构存储
{
字符名[100];
int-id;
}信息[100];
int main()
{
memset(info,0,sizeof(info));
int i=0;
printf(“输入您的姓名”);
scanf(“%99s”,信息[i].名称);
printf(“输入您的ID\n”);
scanf(“%d”&(info[i].id));
如果(信息[i]。名称[0]!='\0')
{
printf(“%d%s”,信息[i].id,信息[i].name);
}
其他的
{
printf(“未找到数据”);
}
}
您从未设置过i
。您希望i
具有什么值?如果scanf
未将任何数据写入info->name
,则该数据也未初始化。与其检查info->name
的内容,不如检查scanf返回的值。例如if(scanf(“%99s”,p->name)!=1{…}
我没有得到它。请你详细说明这是错误的info.name[i]
应该是info[i].name
。