将数组的一部分复制到另一个变量中

时间:2014-12-15 18:19:39

标签: c arrays copy segments

所以我试图以最简单的方式将数组的一部分复制到另一个数组中。我试图避免使用循环。这是我的思考过程......

char date[]="20140805";
char year =date[0..3];

" .."是导致错误的原因。我希望能够将日期变量分解为多个部分,并且希望能够像这样在一行中紧凑地完成。一些帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

你不应该使用循环。

char year[5];
char date[] = "20140805";

memcpy(year, date, 4);
year[4] = 0;

你应该怎么做,或者你想要

char date[] = "20140805";
char year[] = {date[0], date[1], date[2], date[3], 0};

答案 1 :(得分:0)

这是一个例子:

实际上你可以使用这种方法复制字符串的任何部分:)

只需更改from和sz变量即可完成:)

#include <stdio.h>
#include <string.h>
int main ()
{
  char date[]= "20140805";
  int sz=4; // number of characters to copy

  char year[sz+1];
  int from = 0; // here from is where you start to copy

  strncpy ( year, date + from, sz );

  year[sz]=0;

  puts (year);

  return 0;
}

答案 2 :(得分:0)

OP想要一个单行:这里有一个声明加一行。

char year[5] = {0};
strncpy(year,date,4);

这个答案解决了strncpy()的弱点,如果count <= strlen(source);,它不会追加最后的0。这不是最好的解决方案,但它可以解决OP的问题,同时避开陷阱。

strncpy()

之前和之后的char数组的字节转储
0 0 0 0 0
50 48 49 52 0