2012-03-18 70 views
1

如果問題不清楚,很抱歉。我的術語詞彙很糟糕。無論如何,我想設置一個字符串是一個結構。例如,如果我的strucutre被定義爲:如何將結構中的值複製到char數組

struct all_routes{ 
    int id; 
    char departure_code[4]; 
    char arrival_code[4]; 
}; 
struct all_routes all_routes_divid[500]; 

我加我想設置一個字符串包含此數組結構的要素之一採取值:

char firs_airport_code[4] = all_routes_divid[1].departure_code; 

我該怎麼辦這個?

+0

我不確定需要什麼,但是你真的想要將字節從一個字符串複製到另一個字符串嗎?我們可以通過問「你想在字符串中看到'all_routes_divid [1] .id'中的值怎麼看?」你想要一個二進制值,這是不太可能以任何有用的方式打印,或者你想要一個可打印的值?您可能試圖創建可打印的字符串,在這種情況下,需要sprintf。例如,如果你想輸出一個格式良好的字符串,你可能會做sprintf(airport_id,「%06d」,all_routes_divid [1] .id);'當然,我可能是錯的:-) – gbulmer 2012-03-18 19:18:41

回答

4

利用strcpy -

char firs_airport_code[4]; 
...... 
strcpy(firs_airport_code, all_routes_divid[1].departure_code); 

或使用memcpy -

char firs_airport_code[4]; 
...... 
memcpy(firs_airport_code, all_routes_divid[1].departure_code, 4); 

或使用strncpy -

char firs_airport_code[4]; 
...... 
strncpy(firs_airport_code, all_routes_divid[1].departure_code, 4); 

我會建議使用strcpy爲簡單起見(因爲它通常用於複製字符串和這個名字也很直觀;-))。但有時memcpy執行速度比strcpy快,因爲它在某個時間移動內存塊,允許它執行一些優化(我在這裏不會詳述)。

+0

這也適用。但是有沒有其他的方法,比如將'first_airport_code'指向'all_routes_divid [1] .departure_code'? – 2012-03-18 17:43:47

+1

@LearningC:不,我不這麼認爲。如果它是一個指針,你可能會指出'first_airport_code'到'all_routes_divid [1] .departure_code',而不是。它是一個數組,雖然隱式被當作指針。所以如果你嘗試將'first_airport_code'指向那個數組,C就不會允許它。 – 2012-03-18 17:46:22

+0

'str(n)cpy'絕對是您的選擇。 – adelbertc 2012-03-18 17:51:33

相關問題