所以我正在尝试以最简单的方式将数组的一部分复制到另一个数组中。我试图避免使用循环。这是我的思考过程...
char date[]="20140805";
char year =date[0..3];
".."是导致错误的原因。我希望能够将日期变量分解为多个部分,并希望能够在这样的一行中紧凑地做到这一点。一些帮助将不胜感激。
你不应该使用循环。
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};
下面是一个执行此操作的示例:
实际上,您可以使用此方法复制字符串的任何部分:)
只需更改 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;
}
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