我想在编码方面获得帮助。我使用C(使用文件)创建了一个客户忠诚度系统,现在我需要为我的客户分配一些被叫点,但发生的事情是它不会为它们分配任何点。
{
for (int i = 0; i < (count / 3); i++)
{
fscanf(reward_file, "%s\n%s\n%d\n", user[i].Username, user[i].Password, &user[i].Points);
if (Point = user[i].Points)
{
strcpy(user[i].Points, Reward);
Point = Point + Reward;
printf("%d", Point);
system("pause");;
}
}
fclose(reward_file);
FILE *new_file = fopen("CustomerRegistration.txt", "w");
for (int i = 0; i < NumOfCust; i++)
{
fprintf(new_file, "%s\n%s\n%d\n", user[i].Username, user[i].Password, user[i].Points);
}
fclose(new_file);
printf("You Have Successfully Added Your Point!!!\n");
printf("You Will be Redirected Back to Customer Privilege Menu");
system("TIMEOUT \t 5");
}
我正在为我的客户使用struct,这里是代码
struct USER
{
char Username[255];
char Password[255];
int Points;
};
struct USER user[100];
数据来自名为“登录”的功能
FILE *LOGINFILE = fopen("CustomerRegistration.txt", "r");
if (LOGINFILE)
{
system("cls");
printf("!!!Hello Customer!!!\n");
printf("Please type in your Username and Password\n");
printf("Username\t: ");
//while ((c = getchar()) !='\n');
gets(UN);
printf("Password\t: ");
gets(Pswd);
我还分配了名为“Point”的全局变量
int Point = 0;
我们非常感谢您的帮助。
答案 0 :(得分:0)
根据我从您发布的代码中了解到的内容,您希望将奖励添加到客户点。
首先你只需要添加到user.Points奖励,使用strcpy是没有意义的,因为该函数用于复制字符串。
if(Point = user [i] .Points)首先也没有意义,因为C等式条件由双等号(“==”)表示,你不需要进行检查。
.Points成员是一个int,Reward也是一个int,因此你可以进行算术运算,而不需要使用另一个Point辅助。
for (int i = 0; i < (count / 3); i++)
{
fscanf(reward_file, "%s\n%s\n%d\n", user[i].Username, user[i].Password, &user[i].Points);
user[i].Points += Reward;
printf("%d", user[i].Points);
system("pause");;
}
.....
答案 1 :(得分:0)
第一个循环:
for (int i = 0; i < (count / 3); i++)
第二个循环
for (int i = 0; i < NumOfCust; i++)
如果NumOfCust大于(count / 3),您将在CustomerRegistration.txt上获得单位化值。我看不到这些变量的值,但确保它不会发生。最好的方法是将第一个循环中i的最后一个值用于第二个循环的停止条件。