2017-04-01 74 views
1

是否有可能使现有结构成为数组?C语言:结构和数组

struct violation v1={"AA1", "Defective_Brakes", 150}; 
struct violation v2={"AA2", "Disregarding_Traffic_Signs", 150}; 
struct violation v3={"AA3", "Driving_Under_the_Influence_of_Liquor", 2000}; 
struct violation v4={"AA4", "Driving_while_using_Mobile_Devices", 200}; 
struct violation v5={"AA5", "Drinving_without_License", 750}; 
struct violation v6={"AA6", "Driving_Against_Traffic", 2000}; 
struct violation v7={"AA7", "Failure_to_use_Seatbelt", 500}; 
struct violation v8={"AA8", "Illegal_Parking", 200}; 
struct violation v9={"AA9", "Overspeeding", 1200}; 
struct violation v10={"AA10", "Reckless_Driving", 750}; 

这是应该是我的代码的数据库。我想将它变成一个数组,以使数据库中的搜索更容易。我能做什么?

回答

0

数组是同质的,即它只能保存一次,就像数组中的所有元素都是整数或字符串,但不能混合使用该结构的类型,我在您的示例中看到您同时具有String和整数,因此如果你想改变你的结构到数组,那么你必须将它们全部转换为字符串。

另外考虑你的情况,我会建议你继续使用结构,因为它有数据类型的混合。您也可以使用struct violation violations [n];将所有这些结构存储在一个数组中,然后使用for循环将它们填充到违规中,完整示例请参阅How do you make an array of structs in C?

+0

但可以”你有没有一系列的结构? –

+1

已在答案中更新。 –

0

是的。正如你对规则的阵列做,你可以创建struct秒的数组:

struct violation v[10]={ 
        {"AA1", "Defective_Brakes",      150}, 
        {"AA2", "Disregarding_Traffic_Signs",   150}, 
        {"AA3", "Driving_Under_the_Influence_of_Liquor", 2000}, 
        {"AA4", "Driving_while_using_Mobile_Devices", 200}, 
        {"AA5", "Drinving_without_License",    750}, 
        {"AA6", "Driving_Against_Traffic",    2000}, 
        {"AA7", "Failure_to_use_Seatbelt",    500}, 
        {"AA8", "Illegal_Parking",      200}, 
        {"AA9", "Overspeeding",       1200}, 
        {"AA10", "Reckless_Driving",      750}, 
       }; 
0

您可以轻松地把你的数据在阵列中,而不是十个单独变量:

struct violation violations[] = { 
    {"AA1", "Defective_Brakes", 150}, 
    {"AA2", "Disregarding_Traffic_Signs", 150}, 
    {"AA3", "Driving_Under_the_Influence_of_Liquor", 2000}, 
    {"AA4", "Driving_while_using_Mobile_Devices", 200}, 
    {"AA5", "Drinving_without_License", 750}, 
    {"AA6", "Driving_Against_Traffic", 2000}, 
    {"AA7", "Failure_to_use_Seatbelt", 500}, 
    {"AA8", "Illegal_Parking", 200}, 
    {"AA9", "Overspeeding", 1200}, 
    {"AA10", "Reckless_Driving", 750} 
};