我正在编写一个小程序,其中的数据库按以下结构组织:
typedef struct {
char fname[20];
char lname[20];
char phone[12];
char address[50];
} database;
当我要求输入一个条目的所有值时,我按如下方式进行(程序开始时 var save 为 0):
if(option == 1)
{
printf("\nPlease input each of the following parameters separated by space: \n");
printf("Firstname Lastname Phone Address: \n");
scanf("%s %s %s %s", &list[save].fname, &list[save].lname, &list[save].phone, &list[save].address);
save++;
printf("\n\n!!!!! DONE !!!!!\n\n");
}
问题是,我希望最后一个字符串输入(地址)能够存储一个完整的带有空格的句子。当我输入诸如 Andres Guerra +15551234 55555 AB Ave., UT 之类的内容时。它只会保存在 list[save].address 55555 中,其余的东西会为下一次输入而保存,从而导致存储差异。
如何在地址结构元素中保存包含空格的完整句子?
注意:我还尝试单独使用地址对 %s 进行额外的 scanf,但它也没有用。
如果我使用 Country 而不是 Address,程序运行良好。
最佳答案
尝试使用
scanf("%s %s %s %49[0-9a-zA-Z ]",
&list[save].fname,
&list[save].lname,
&list[save].phone,
&list[save].address
);
希望对您有所帮助。
关于c - 在小型数据库程序中存储地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610056/