|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C语言怎么储存一个用户输入的字符串?或者怎么初始struct中的char数组值??
如以下代码,我希望在最后输出ha[0].zhiwei的初始值,而不是排序之后的值。
我如果用指针就会让这个值一直变动
- #include <stdio.h>
- #define HAH 99
- struct ren
- {
- char name[20];
- int piao;
- char xuanju[20];
- char zhiwei[99];
- };
- void main()
- {
- struct ren ha[HAH];
- int i;
- int n;
- int c;
- int j;
- int a;
- //char *zhi= ha[0].zhiwei;
- printf("输入选举的职位。\n");
- scanf_s("%s", &ha[0].zhiwei,99);
- //*zhi= ha[0].zhiwei;
- printf("输入参与投票的人数。\n");//获取被选举人的数量
- scanf_s("%d", &n);
- for (i = 0;i < n;i++)//将票数初始为0
- {
- ha[i].piao = 0;
- }
- for (i = 0;i < n;i++)//获取被选举人的姓名
- {
- printf("输入第%d位参与投票的人的姓名。\n",i+1);
- scanf_s("%s", &ha[i].name, 20);
- }
- system("cls");
- printf("现在进行的是 %s 的选举\n", ha[0].zhiwei);
- printf("本次参加选举的人有\n");
- for (i = 0;i < n;i++)
- {
- printf("%s/", ha[i].name);
- }
- printf("\n输入这次参与投票的人数\n");//获取选举人的数量
- scanf_s("%d", &c);
- for (i = 0;i < c;i++)//投票环节
- {
- system("cls");
- printf("现在进行的是 %s 的选举\n", ha[0].zhiwei);
- printf("本次参加选举的人有\n");//清屏后再次打印,以做到绝对公平且隐藏的选票
- for (a = 0;a < n;a++)
- {
- printf("%s/", ha[a].name);
- }
- printf("\n请第%d号投票人输入你想选举的人\n", i + 1);//获取投票的姓名
- scanf_s("%s", &ha[i].xuanju,20);
- for (j = 0;j < n;j++)//将姓名进行对比
- {
- if (strcmp(ha[i].xuanju,ha[j].name)==0)
- {
- ha[j].piao++;
- }
- }
- }
- struct ren temp;
- for (i = 0;i < n;i++)
- {
- for (j = 0;j + 1 < n;j++)
- {
- if (ha[j + 1].piao > ha[j].piao)
- {
- temp = ha[j + 1];
- ha[j + 1] = ha[j];
- ha[j] = temp;
- }
- }
- }
- system("cls");
- printf("\t\t姓名\t\t\t\t票数\n");//输出票数
- for (i = 0;i < n;i++)
- {
- printf("%20s\t\t%20d\n", ha[i].name, ha[i].piao);
- }
- printf("恭喜%s获得%s职位。\n",ha[0].name,ha[0].zhiwei);
- }
复制代码
你可以使用 scanf_s 函数来储存用户输入的字符串。为了避免缓冲区溢出,你需要指定字符串的最大长度。在这个例子中,你可以使用 scanf_s("%s", ha[0].zhiwei, 99) 来储存用户输入的字符串到 ha[0].zhiwei 中。
如果你想要初始化 struct 中的 char 数组值,你可以使用 strcpy 函数。在这个例子中,你可以使用 strcpy(ha[0].zhiwei, "初始值") 来将"初始值"复制到 ha[0].zhiwei 中。请注意, strcpy 函数需要包含 string.h 头文件。
以下是修改后的代码:
- #include <stdio.h>
- #include <string.h>
- #define HAH 99
- struct ren
- {
- char name[20];
- int piao;
- char xuanju[20];
- char zhiwei[99];
- };
- void main()
- {
- struct ren ha[HAH];
- int i;
- int n;
- int c;
- int j;
- int a;
- printf("输入选举的职位。\n");
- scanf_s("%s", ha[0].zhiwei, 99);
- // 初始化struct中的char数组值
- strcpy(ha[0].zhiwei, "初始值");
- printf("输入参与投票的人数。\n");
- scanf_s("%d", &n);
- for (i = 0; i < n; i++)
- {
- ha[ i].piao = 0;
- }
- for (i = 0; i < n; i++)
- {
- printf("输入第%d位参与投票的人的姓名。\n", i + 1);
- scanf_s("%s", ha[ i].name, 20);
- }
- // 省略其他代码
- }
复制代码
这样,你就可以在最后输出 ha[0].zhiwei 的初始值了。
|
|