为客户C编程分配点

时间:2017-06-09 20:00:51

标签: c file text login system

我想在编码方面获得帮助。我使用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;

我们非常感谢您的帮助。

2 个答案:

答案 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的最后一个值用于第二个循环的停止条件。