【问题标题】:Giving struct to function with pointers用指针赋予结构函数
【发布时间】:2013-12-06 01:18:08
【问题描述】:

在 C 中,我尝试使用结构来存储播放器的当前数据,我在结构中进行管理:

#include <stdio.h>
#include <stdlib.h>

typedef struct playerdat{
  char playername[20];
  int maxhp;
}playerdat;

void new_game(struct playerdat *player){

  printf("Enter your character's name: \n");
  scanf("%s", &player->playername);
  player->playername = strcpy("Little", player->playername);
}

int main(){

  struct playerdat player;
  new_game(&player);

  return 0;
}

一切正常,直到我尝试更改结构的元素。

错误消息为:error: incompativle types when assignin to type 'char[20]' from type 'char *'

你能告诉我一个应该如何在这里使用指针的例子吗? 感谢您的帮助!

【问题讨论】:

  • 这不是“离题”。它应该只是 `scanf("%s", player->playername);` 而不是 scanf("%s", &amp;player-&gt;playername);scanf 想要一个char*,而player-&gt;playername 已经是一个char*,你不能引用它。

标签: c function pointers struct scanf


【解决方案1】:
scanf("%s", &player->playername);//don't need &
player->playername = strcpy("Little", player->playername);//you know,the memeber `playername` is a array,`playername` is the name of the array,so you can't modify the name of a array

【讨论】:

  • 那怎么改变player.playername字符数组的内容呢?
  • 像这样:char *name = "Little"; strncpy(player-&gt;playername,name ,strlen(name)+1);
【解决方案2】:

不要在 scanf 上将 & 与 char 一起使用。

    #include<stdio.h>
    int main()
    {
        char name[20];
        int age;
        printf ("Enter your family name: ");
        scanf ("%s",name); //notice here no &
        printf ("Enter your age: ");
        scanf ("%d",&age);  // here comes &
        return 0;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2011-07-04
    • 2020-05-09
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多