首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于printf("%s\n"p1),p1替char *类型

2012-09-11 
关于printf(%s\n,p1),p1为char *类型C/C++ code#include stdio.h#include string.hchar *my(char *f

关于printf("%s\n",p1),p1为char *类型

C/C++ code
#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;}

printf("%s\n",p1); //这里怎么出不来

[解决办法]
C/C++ code
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所指内容
[解决办法]
探讨
C/C++ code
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是临时变量……

热点排行