使用 printf 语句 printf("new s3 string (in locate function) is\"%s\"\n",s3)
,代码可以正常工作
但是当 printf("new s3 string (in locate function) is\"%s\"\n",s3)
被注释时,代码返回 null
printf
如何影响 return
值?
#include <stdio.h>
#include <string.h>
char * locate(char * s1,char * s2,int index)
{
printf("s1 string is \"%s\" \n",s1);
printf("s2 string is \"%s\" \n",s2);
int i=0,j=0, k;
char s3[100];
while(i<=index)
{
s3[i]=s1[i];
i++;
}
k=i;
while(s2[j]!='\0')
{
s3[i]=s2[j];
i++; j++;
}
while(s1[k]!='\0')
{
s3[i]=s1[k];
i++;k++;
}
s3[i]='\0';
//printf("new s3 string (in locate function) is \"%s\" \n",s3);
return ((char *)s3);
}
int main(void)
{
char * s1="my name shwetha";
char * s2="is ";
s1=locate(s1,s2,7);
printf("Final Inserted string S1 is \"%s\" \n",s1);
return 0;
}
最佳答案
s3
超出范围(它离开了创建它的函数),因此无论哪种方式它都有未定义的行为。您需要在 main
中创建 s3
并将其作为另一个参数传入,或者通过 malloc()
使用堆分配,它由操作系统。
关于c - printf如何改变函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488594/