在如“test#20170425|0425”格式的字符数组的#前插入字符C
char comment[32] = "test#20170420|0420";
char *pos = strchr(comment, '#');
char front[32]={0};
char back[32]={0};
char newComment[32] = {0};
memcpy(front, comment, pos-comment);
strcpy(back, pos);
sprintf(newComment, "%sC%s", front, back);
cout<<newComment<<endl;
输出的newComment为testC#20170420|0420。
如果不用新的字符数组newComment和back接纳,而是直接用pos在commnet上边sprintf,会出现问题。
char comment[32] = "test#20170420|0420";
char *back = strchr(comment, '#');
char front[32]={0};
memcpy(front, comment, back-comment);
sprintf(comment, "%sC%s", front, back);
cout<<comment<<endl;
此时输入的comment为
因为此时的back指针和comment指向的都是和comment相关的,一个指向#,一个指向首地址。