为什么编译器会发出:警告:赋值从指针生成整数而不进行强制转换
Why does the compiler issue : warning: assignment makes integer from pointer without a cast
我正在尝试将一些信息放入二维字符数组中。我在 stdin 中放入了一个名称列表,我试图将其放入一个数组中,其中的数字对应于字符数组(名称)。出于某种原因,当我尝试打印名称时,它会输出一些随机字符。
#include <stdio.h>
#define NAME_MAX_LENGTH 20
#define NUM_MIN_PLAYERS 2
#define NUM_MAX_PLAYERS 20
struct PlayerList {
unsigned int num_players;
char name[NUM_MAX_PLAYERS][NAME_MAX_LENGTH + 1];
};
int main() {
int num;
char nom[NAME_MAX_LENGTH + 1];
struct PlayerList player;
while(fgets(nom, sizeof nom, stdin) != NULL){
char longueur = 0;
player.name[num++][sizeof nom] = nom;
printf("%d:%s\n", num, player.name[num]);
}
player.num_players = num;
return 0;
};
此声明
player.name[num++][sizeof nom] = nom;
不正确。
至少你的意思是
strcpy( player.name[num++], nom );
为此,您需要包括 header
#include <string.h>
否则表达式
player.name[num++][sizeof nom]
的类型为 char
而右侧表达式 nom
的类型为 char *
.
也是这个输出
printf("%d:%s\n", num, player.name[num]);
具有未定义的行为,因为变量 num 已经在上面的语句中递增
player.name[num++][sizeof nom]
^^^^^
你至少应该写
printf("%d:%s\n", num - 1, player.name[num-1]);
我正在尝试将一些信息放入二维字符数组中。我在 stdin 中放入了一个名称列表,我试图将其放入一个数组中,其中的数字对应于字符数组(名称)。出于某种原因,当我尝试打印名称时,它会输出一些随机字符。
#include <stdio.h>
#define NAME_MAX_LENGTH 20
#define NUM_MIN_PLAYERS 2
#define NUM_MAX_PLAYERS 20
struct PlayerList {
unsigned int num_players;
char name[NUM_MAX_PLAYERS][NAME_MAX_LENGTH + 1];
};
int main() {
int num;
char nom[NAME_MAX_LENGTH + 1];
struct PlayerList player;
while(fgets(nom, sizeof nom, stdin) != NULL){
char longueur = 0;
player.name[num++][sizeof nom] = nom;
printf("%d:%s\n", num, player.name[num]);
}
player.num_players = num;
return 0;
};
此声明
player.name[num++][sizeof nom] = nom;
不正确。
至少你的意思是
strcpy( player.name[num++], nom );
为此,您需要包括 header
#include <string.h>
否则表达式
player.name[num++][sizeof nom]
的类型为 char
而右侧表达式 nom
的类型为 char *
.
也是这个输出
printf("%d:%s\n", num, player.name[num]);
具有未定义的行为,因为变量 num 已经在上面的语句中递增
player.name[num++][sizeof nom]
^^^^^
你至少应该写
printf("%d:%s\n", num - 1, player.name[num-1]);