gpt4 book ai didi

c - 如何打印结构变量保存的字符数组?

转载 作者:行者123 更新时间:2023-12-04 10:13:56 26 4
gpt4 key购买 nike

我在使用结构变量获取两个玩家昵称、姓名、年龄等的小代码时遇到了麻烦。

问题是当我打印两个玩家的信息时,我得到了一些随机字母和问号。

这是我的 main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "main.h"

int main()
{
Player joueur[2];
int i = 0;

do
{
printf("Nickname : ");
scanf("%16s", joueur[i].nickname);

printf("Last Name : ");
scanf("%41s", joueur[i].lastName);

printf("First Name : ");
scanf("%41s", joueur[i].firstName);

printf("Your age : ");
scanf("%d", &joueur[i].age);

printf("\n");

i++;
}while (i < 2);

int p = 1;
do
{
printf("============== Joueur %d =============\n", p);

printf("Nickname : %s\n", joueur[i].nickname);
printf("Name : %s %s\n", joueur[i].lastName, joueur[i].firstName);
printf("Age : %d\n\n", joueur[i].age);

p++;
}while (p < i + 1);

return (0);
}

还有我用它的 main.h :

#ifndef MAIN_H
#define MAIN_H

typedef struct Player Player;
struct Player
{
char nickname[17];
char firstName[42];
char lastName[42];

int age;
};

#endif

到目前为止我还没有弄清楚为什么我没有得到我期望的结果,我想我需要一些帮助。

最佳答案

在你的打印盒中,

  printf("Nickname : %s\n", joueur[i].nickname);
printf("Name : %s %s\n", joueur[i].lastName, joueur[i].firstName);
printf("Age : %d\n\n", joueur[i].age);

i 值从 2 开始,超出范围。

另外,我根本没有明白使用p的目的。

解决方案:只需在扫描完成后将 i 重置为 0,并使用与扫描值相同的条件进行打印。就这样。

关于c - 如何打印结构变量保存的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com