printf如何更改函数的返回值?

PyR*_*kie 0 c

使用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;
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ert 8

s3超出范围(它留下了它创建的函数),所以它有任何未定义的行为.您需要可以创建s3main和把它作为另一个参数,或使用堆分配通过malloc()它由操作系统管理.