如何从用户处指定C中struct的标记?

如何从用户处指定C中struct的标记?,c,input,struct,tags,clang,C,Input,Struct,Tags,Clang,我试图在执行过程中根据用户的输入指定struct的标记(结构标记名) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct todo { int when; }; int main(void) { char t1[10]; printf("Title :"); scanf("%s", &t1); struct todo t1; printf("Tim

我试图在执行过程中根据用户的输入指定struct的标记(结构标记名)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct todo
{
    int when;     
};


int main(void)
{
    char t1[10];
    printf("Title :");
    scanf("%s", &t1);

    struct todo t1;
    printf("Time: ");
    scanf("%d", &t1.when);     // "&t1" is the problem, but I can't fix this. 
    printf("%d", t1.when);     // "t1" also the problem

    return 0;
}
\define\u CRT\u SECURE\u NO\u警告
#包括
结构待办事项
{
int时;
};
内部主(空)
{
chart1[10];
printf(“标题:”);
scanf(“%s”&t1);
结构todo t1;
printf(“时间:”);
scanf(“%d”和&t1.when);/“&t1”是问题所在,但我无法解决此问题。
printf(“%d”,t1.when);/“t1”也是问题所在
返回0;
}
有没有办法修复我的代码或指定标记名


我使用的是visual studio 2017,windows 10

char t1[10]
t1
定义为十个
char
的数组,将
struct todo t1
定义为
struct todo
类型的结构。不能在同一范围内重复使用名称。编译器是否在
结构todo t1上向您发出错误消息行?如果是这样,只需使用不同的名称,如
t2
。(您可以在不同的作用域中重用名称,例如在函数外部有一个
foo
,在函数内部有一个不同的
foo
。您甚至可以在函数内部用嵌套块[statements inside
{…}
]来实现这一点。但这应该明智地进行。在这种情况下,只需使用不同的名称。)@谢谢你的评论!结构todo t1上没有错误消息。我的意思是在scanf执行(运行)期间指定struct name。我该怎么做…?问题中的代码与您报告的编译器行为不匹配。典型的编译器会对第一个
scanf
行发出警告,因为
&t1
是数组的地址,但是
%s
需要
字符的地址,并且会对
结构todo t1发出错误行,因为已定义了
t1
。然后,它将对
scanf
printf
行发出进一步的警告或错误。首先,确保问题中的文本正是您正在编译的内容。然后将编译器的输出复制并粘贴到问题中(使用
将其标记为预格式化文本)。