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/