c - 成员(member)身份识别

标签 c file-io

char membership[10],memberID[10];
int c;
float AfterDiscount;

printf("\nEnter Your Membership ID to get 5 percent discount: ");
scanf(" %s",&memberID);
member=fopen("Membership.txt","r");
fgets(membership,10,member);
    if(strcmp(membership,memberID)==0)
        {
        AfterDiscount=final*0.95;
        printf("Your final price after 5 percent discount is RM%6.2f",AfterDiscount);
        printf("Thank you to come again, our honour member.");
        fclose(member);
        return AfterDiscount;
        }

printf("The Member ID is not exist. Please kindly contact the adminstrator, 03-XXXXXXX\n");
fclose(member);
return 0;

我想确定是否存在以“B123456789”模式形成的成员资格。我创建了一个成员资格列表并命名为“Membership.txt”。但即使我输入了有效的成员(member) ID,似乎也不起作用。

最佳答案

您调用fgets最多会读取 10 - 1 = 9 个字符,这意味着您读取的 10 个字符 ID 将丢失最后一个字符。此外,您的字符串长度仅足以容纳 9 个字符 + \0 终止符。

更改:

char membership[10],memberID[10];

至:

char membership[11],memberID[11];

并更改:

fgets(membership,10,member);

至:

fgets(membership,sizeof(membership),member);

关于c - 成员(member)身份识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221593/

相关文章:

c - 如何打破 libuv 中的长回调链

c - 在链表末尾添加数据的函数

c++ - 关于struct data 'getting'的性能

c - 使用popen()时如何同时启用read和fd_cloexec

c - 串口readfile()输出什么类型的参数?在 C/C++ 中

c - 如何使用指针交换 2 个整数?

c - 将节点放入不应该存在的解析树中

java - 同步和IO文件

java - 如何从 Java 中的相对路径运行可执行文件

R 将列转换为 NA 值 - 为什么?