所以我试图以最简单的方式将一个数组的一部分复制到另一个数组中。我试图避免使用循环。这是我的思考过程...
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()
这个答案解决了不附加最终 0 if的弱点count <= strlen(source);
。这不是最好的解决方案,但它在避免陷阱的同时回答了 OP 的问题。
char 数组之前和之后的字节转储strncpy()
0 0 0 0 0
50 48 49 52 0