c - 在小型数据库程序中存储地址

标签 c

我正在编写一个小程序,其中的数据库按以下结构组织:

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/

相关文章:

c - C 中的结构、城市和距离、图表和 Dijkstras

c++ - && 的优先级高于 ||

c - 将每个像素乘以比例因子

python - 量化文件更改

python - 在 .so 文件中使用 C 模块时出现段错误

c - 在#Include 指令中使用 C 文件时 C 程序出错(多重定义错误)

c - C语言共享库中的静态/全局变量

c - 在 gcc 中编译 SHA1( ) 函数失败。 c语言

c++ - 如何编写尊重常量的 C 结构指针包装器

c - BMI计算器不工作