基本上我有一个客户结构,我要在其中输入客户详细信息,其中之一是地址。当然地址是一个句子,因为这是一个没有图形的基本文本程序。
我正在尝试使用scanf("%[^\n]",&VARIABLE)
方法,因为它在以前的程序中有效。但是在这里,输入被跳过。我尝试在接受此输入之前刷新缓冲区,但没有任何区别。我还尝试创建另一个字符串并将我的输入传递给它,然后将数据复制到我的结构中,但这也不起作用。
这是我的代码 - 问题发生在第 4 次scanf("%[^\n]",&myCust.address)
:(注意:这是一项正在进行的工作,所以你现在可能会看到一些额外的打印和东西)
void addNewCustomer()
{
struct customer myCust;
printf("\n\nNEW CUSTOMER ADDITION\n");
printf("\nEnter customer id : ");
scanf("%s",&myCust.idNumber);
printf("\nEnter customer name : ");
scanf("%s",&myCust.name);
printf("\nEnter customer surname : ");
scanf("%s",&myCust.surname);
fflush(stdin);
printf("\nEnter customer address : ");
scanf("%[^\n]",&myCust.address);
printf("\nEnter customer telephone : ");
scanf("%s",&myCust.telephone);
printf("\nEnter customer mobile : ");
scanf("%s",&myCust.mobile);
printf("\nEnter customer e-mail : ");
scanf("%s",&myCust.email);
FILE *fp;
fp = fopen("/Users/alexeidebono/Dropbox/Customer_Application/customers.dat","a");
if (fp == NULL) {
printf("The File Could Not Be Opened.\n");
exit(0);
}
else{
printf("File Successfully Open\n");
fprintf(fp,"%s*%s*%s*%s*%s*%s*%s#\n",myCust.idNumber,myCust.name,myCust.surname,myCust.address,myCust.telephone,myCust.mobile,myCust.email);
fclose(fp);
printf("Writing successfully completed and the file is closed!!\n");
}
}
如果你想要我的结构代码在这里(虽然我不认为结构本身是这个问题的原因)
struct customer
{
char idNumber[11];
char name[11];
char surname[15];
char address[30];
char telephone[14];
char mobile[14];
char email[21];
};