c - printf如何改变函数的返回值?

标签 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;
}

最佳答案

s3 超出范围(它离开了创建它的函数),因此无论哪种方式它都有未定义的行为。您需要在 main 中创建 s3 并将其作为另一个参数传入,或者通过 malloc() 使用堆分配,它由操作系统。

关于c - printf如何改变函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488594/

相关文章:

c - 语音 ip 的服务类型字段集

c - 我不知道如何将输入文件中的字符串(单词)读取到链接列表中

c - 原地反转数组

c - 如何根据有多少用户选择再次输入,在C编程中输出时打印do

ubuntu - 如何使用 C/C++ 向 ttyACM0 设备写入命令并获取结果信息数据

c - C语言中的隐写术

无法使用 `getpagesize()` 调用在 C 中设置全局变量

c - malloc() 中的双倍大小

c++ - 将 uint8 转换为字符串

c - 用于 lzw 压缩的可变长度字符串数组