所以我试图以最简单的方式将数组的一部分复制到另一个数组中。我试图避免使用循环。这是我的思考过程......
char date[]="20140805";
char year =date[0..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()
0 0 0 0 0
50 48 49 52 0