警告:赋值从指针生成整数而不用 C 中的强制转换 [-Wint-conversion]
warning: assignment makes integer from pointer without a cast [-Wint-conversion] in C
这不是我的整个程序,但我认为这些是您唯一需要的部分,因为它们是唯一使用的功能。
typedef struct
{
char name[64];
int balance;
int gain;
}
Player;
Player Players[10];
FILE *fp;
Player GetPlayerData(const char* name, Player p){
char First[100];
int i = 0;
for (;;)
{
if (strcmp(name, p[i].name) == 0)
{
return p[i];
}
/*else{
printf("The name you inputed is not on the list.\n"
"Here are the names that are: \n");
while(1){
fscanf(fp, "%s", &First);
printf("\n%s %d", First);
if(feof(fp) == 1){
break;
}
}
}
i++;*/
}
}
void TopBal(){
char name[64];
int Add[100];
printf("Enter your name: ");
scanf("%s", &name);
Player p = GetPlayerData(name, Players);
printf("How much money would you like to add: ");
scanf("%d", &Add);
p.balance = p.balance + Add;
printf("Your balance is now %d", p.balance);
//PushPlayerData(FILE_NAME, name);
}
这是警告。
./Project.c: 在函数‘TopBal’中:
./Project.c:108:15: 警告:赋值从指针生成整数而不进行强制转换 [-Wint-conversion]
(p).balance = (p).balance + 添加;
p.balance // This is int
= p.balance // again int
+ Add; // but this is int array / pointer
你可能是想尊重 Add。例如
p.balance = p.balance + Add[0];
Add
是一个数组,在表达式中转换为指针(不包括一些例外,如sizeof
operatpr的操作数)。
您没有使用数组 Add
的多元素特性,因此它应该是简单变量 int Add;
,而不是 int Add[100];
。
您还应该删除 scanf("%s", &name);
中的 &
,因为它会导致类型不匹配(传递指向数组 char(*)[64]
的指针,而预期指向字符 char*
的指针) ,它会调用 未定义的行为 。
再次注意,表达式中的大多数数组都会转换为指针。
这不是我的整个程序,但我认为这些是您唯一需要的部分,因为它们是唯一使用的功能。
typedef struct
{
char name[64];
int balance;
int gain;
}
Player;
Player Players[10];
FILE *fp;
Player GetPlayerData(const char* name, Player p){
char First[100];
int i = 0;
for (;;)
{
if (strcmp(name, p[i].name) == 0)
{
return p[i];
}
/*else{
printf("The name you inputed is not on the list.\n"
"Here are the names that are: \n");
while(1){
fscanf(fp, "%s", &First);
printf("\n%s %d", First);
if(feof(fp) == 1){
break;
}
}
}
i++;*/
}
}
void TopBal(){
char name[64];
int Add[100];
printf("Enter your name: ");
scanf("%s", &name);
Player p = GetPlayerData(name, Players);
printf("How much money would you like to add: ");
scanf("%d", &Add);
p.balance = p.balance + Add;
printf("Your balance is now %d", p.balance);
//PushPlayerData(FILE_NAME, name);
}
这是警告。 ./Project.c: 在函数‘TopBal’中: ./Project.c:108:15: 警告:赋值从指针生成整数而不进行强制转换 [-Wint-conversion] (p).balance = (p).balance + 添加;
p.balance // This is int
= p.balance // again int
+ Add; // but this is int array / pointer
你可能是想尊重 Add。例如
p.balance = p.balance + Add[0];
Add
是一个数组,在表达式中转换为指针(不包括一些例外,如sizeof
operatpr的操作数)。
您没有使用数组 Add
的多元素特性,因此它应该是简单变量 int Add;
,而不是 int Add[100];
。
您还应该删除 scanf("%s", &name);
中的 &
,因为它会导致类型不匹配(传递指向数组 char(*)[64]
的指针,而预期指向字符 char*
的指针) ,它会调用 未定义的行为 。
再次注意,表达式中的大多数数组都会转换为指针。