当前位置:  开发笔记 > 编程语言 > 正文

如何打印结构变量持有的char数组?

如何解决《如何打印结构变量持有的char数组?》经验,为你挑选了1个好方法。

我在这个小代码中遇到了麻烦,这个代码使用结构变量获得两个玩家的昵称,姓名,年龄等.

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

这是我的main.c

#include 
#include 
#include 
#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

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



1> Sourav Ghosh..:

在你的印刷案例中

  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,并使用与扫描值相同的打印条件.就这样.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有