关于printf("%s\n",p1),p1为char *类型
#include <stdio.h>#include <string.h>char *my(char *f1, int n){ int len=strlen(f1); char temp[15]; char *p1; strcpy(temp,f1+len-n); strcpy(temp+n,f1); temp[len]='\0'; p1=temp; return p1;}int main(){ char *p="5466565655"; char *p1; p1=my(p,3); printf("%s\n",p1); return 0;}char *my(char *f1, int n){ int len=strlen(f1); char temp[15]; char *p1; strcpy(temp,f1+len-n); strcpy(temp+n,f1); temp[len]='\0'; p1=temp; //temp是临时变量,函数退出以后就析构了。后面printf使用的p1内容是不可以预知的 return p1;}
[解决办法]
函数my返回了局部变量的指针
而指针所指内容在my返回后已被销毁
可设置断点看下p1所指内容
[解决办法]