在c中使用char参数创建char函数

时间:2017-07-06 21:19:46

标签: c arrays function char

我是学习c语言的新手,我正在尝试学习char数组的函数。在这段代码中,我想知道一个使用char数组作为参数的函数,并给出另一个char数组作为结果。当我运行代码时,输​​出应该是:Helloooo world!

然而,当我运行代码时,程序崩溃了。我该如何解决这个问题?我使用的是正确类型的变量吗?

#include <stdio.h>
#include <string.h>

char *write();

int main()
{
    char x[10] = "ooo";
    printf("%s, world!\n", *write(x));
    return 0;
}

char *write(char x[10])
{
    char str[10];
    strcpy(str, "Hello");
    strcat(str,x);
    x = str;
    return x;
}

1 个答案:

答案 0 :(得分:1)

您有两个问题:

  1. str是写函数范围中的局部变量。所以你将指针返回到不再存在的东西。
  2. Str太短,无法容纳您的数据。您可以从函数参数中复制“hello”(5个字符)+可能的10个字符。
  3. char *write();
    
    int main()
    {
        char x[10] = "ooo";
        char buff[20];
        printf("%s, world!\n", write(buff, x, 20));
        return 0;
    }
    
    char *write(char *buff, char *s2, int maxsize)
    {
        strcpy(buff, "Hello");
        if(strlen(buff) + strlen(s2) < maxsize)
            strcat(buff,s2);
          else 
            strcpy(buff,"Error");
        return buff;
    }