2012-03-18 53 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

相关问题