在使用C中的指针时,我遇到了一个非常不稳定的结果,我正在使用一个令牌,这是一个字节字符串,我需要创建一个目录路径.令牌包含日期作为前缀,格式为20101129(2010-oct-29),然后是一个20字节的字符串,因此一个令牌看起来像20101102A2D8B328CX9RDTBDE373,该方法应该返回一个看起来像2010/11的路径/ 02/A2D8/B328/CX9R/DTBD/E373.
现在使用我在下面提供的代码中使用的方法,返回具有不需要的字符的字符串,同时代码看起来正常,代码在下面提供
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#define token "20101102A2D8B328CX9RDTBDE373"
#define SLASH "/"
int main()
{
char *mainstring = (char*)malloc(strlen(token));
char *nextstring = (char*)malloc(strlen(token));
char tokenarr[50] = token;
char patharr[50];
char pathmem[50];
char *fullstring = (char*)malloc(strlen(token));
char yrstr[4]="";
char yrmem[4]="";
char yrarr[4]="";
char monstr[2]="";
char monmem[2]="";
char monarr[2]="";
char daystr[2]="";
char daymem[2]="";
char dayarr[2]="";
memcpy(mainstring,token,strlen(token));
memcpy(yrarr,tokenarr,4);
strncpy(yrstr,mainstring,4);
memcpy(yrmem,mainstring,4);
puts(yrarr);
puts(yrstr);
puts(yrmem);
mainstring = mainstring +4;
memcpy(monarr,tokenarr+4,2);
strncpy(monstr,mainstring,2);
memcpy(monmem,mainstring,2);
puts(monarr);
puts(monstr);
puts(monmem);
mainstring = mainstring+2;
memcpy(dayarr,tokenarr+6,2);
strncpy(daystr,mainstring,2); …Run Code Online (Sandbox Code Playgroud)