2014-09-24 35 views
0

我定義了一個結構供用戶作爲用戶的數組:預定義的結構類型添加到

struct user { 
    char *name; 
    int age; 
}; 

typedef struct user USER; 

,我能創造用戶的數組:

USER uArray[3] = { 
    { "Allan", 12 }, 
    { "Bob", 34 }, 
    { "Chris", 56 } 
}; 

現在我該怎樣去添加一個預定義的用戶列表的用戶?:

USER u1 = { "Dave", 78 }; 

我認爲你可以將它添加到列表中,如下所示。但是,返回錯誤,指出它不能從'USER'轉換爲'char *'。

USER uArray[4] = { 
    { "Allan", 12 }, 
    { "Bob", 34 }, 
    { "Chris", 56 }, 
    u1 
}; 

據我所知,它的治療U1創建用戶(名稱= U1),這樣你還能怎麼預定用戶添加到用戶的數組的第一個元素?


的代碼現在工作:

#include <stdio.h> 

struct user { 
    char *name; 
    int age; 
}; 

typedef struct user USER; 

void changeName(USER *u); 

void main(void) 
{ 
    USER u1 = { "Dave", 78 }; 

    USER uArray[4] = { 
      { "Allan", 12 }, 
      { "Bob", 34 }, 
      { "Chris", 56 } 
    }; 

    // add u1 to position 3 of the array 
    uArray[3] = u1; 

    for (int i = 0; i < 4; i++) 
    { 
     if (uArray[i].name == "Bob") 
     { 
      changeName(&uArray[i]); 
     } 
     printf("User: %d, Name: %s, Age: %d\n", i, uArray[i].name, uArray[i].age); 
    } 
} 

void changeName(USER *u) 
{ 
    u->name = "Dave"; 
} 
+0

uArray [3] = U1。 – 2014-09-24 10:19:27

+0

將其添加到數組中,但執行時會返回調試錯誤;指出變量(uArray和u1)周圍的堆棧已損壞。 – Kurtiss 2014-09-24 10:24:29

+0

使用C99編譯器。例如,clang,gcc。 – BLUEPIXY 2014-09-24 10:24:40

回答

1
#include <stdio.h> 

    struct user { 
     char *name; 
     int age; 
    }; 

    typedef struct user USER; 

    USER u1 = { "Dave", 78 }; 

    USER uArray[4] = { 
    { "Allan", 12 }, 
    { "Bob", 34 }, 
    { "Chris", 56 } 
    }; 

    int main() 
    { 

    int i; 

    uArray[3] = u1; 
    for (i = 0; i < 4; ++i) 
    { 
     printf("%s: %d\n", uArray[i].name, uArray[i].age); 
    } 
    return 0; 
    } 
+0

將其添加到數組中,但執行時會返回調試錯誤;指出變量(uArray和u1)周圍的堆棧已損壞。 – Kurtiss 2014-09-24 10:31:21

+1

我編譯並得到適當的輸出。 cc -o f1 。/ f1 – Gopi 2014-09-24 10:32:41

+0

確定它已被修復,但解決方案使我困惑;當定義數組時,必須指定數組(4)中允許的最大用戶數,但要將預定義用戶添加到數組中,則必須指定數組當前擁有的用戶數(3),而不僅限於那看起來像解決方案表明該數組與用戶相同,實際上,它只是將用戶添加到列表中,是嗎? – Kurtiss 2014-09-24 10:40:47