Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c语言的结构中使用if条件_C_Conditional Statements_Structure - Fatal编程技术网

如何在c语言的结构中使用if条件

如何在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

我想在结构中存储名称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",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的数组,但实际上只需要1
int

此外,在用数据填充数组之前,您不会初始化
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