char pt[116];
pt是一条消息,其中包含由"分隔的3个部分:"最后一部分是随机值
我已将每个值存储在指针
中char* x = strtok( pt, ":" ) ;
char* y = strtok( NULL, ":" ) ;
char* z = strtok( NULL, ":" ) ;
printf("x:%s \n",x);
printf("y:%s \n",y);
printf("z:%s \n",z);
以后我需要第一部分的一些字符
memcpy(x,strcat(x,".pem"),strlen(x)+4) ); //==>this line cause the problem coz
x[strlen(x)]='\0';
printf("%s\n",x);
memcpy(y,y,strlen(y)+strlen(x)+4);
printf("y is :%s\n",y); // here the output is wrong it prints the pem the added part to x
那么,有什么建议将.pem添加到x而不与memcyp重叠?
答案 0 :(得分:1)
<强>的strtok 强>
此函数返回指向字符串中找到的最后一个标记的指针。如果没有要检索的标记,则返回空指针。
当您使用strcat
广告.pem
到字符串的第一部分(x
)时,您将覆盖y
部分。
您应该将每个字符串隔离在不同的数组(c-string)中并更改而不是原始字符串。
// Create a new container for x. Note: +1 is for the c-string null terminator
x_new[strlen(x)+4+1];
strcpy(x_new, x);
strcat(x_new, ".pem");