我们可以将串联结果分配给变量吗?

时间:2019-01-20 11:35:27

标签: c

我想知道我们可以将pip uninstall numpy pip install numpy 分配给另一个变量

我已经在strcat()内通过*str1*str2进行了尝试,但是同一件事没有发生。

strcat()

我希望它会打印int main() { char *str1 = "united"; char *str2 = "front"; char *str3; str3 = strcat(str1, str2); printf("%s\n", str3); return 0; } ,但是输出的是空白屏幕。

2 个答案:

答案 0 :(得分:0)

我不知道是否已经有任何内置函数,但是您可以使用这种函数来实现所需的功能。

    char* concatStrings(const char* s1, const char* s2)
    {
        char* outputString= malloc(strlen(s1) + strlen(s2) + 1);
        outputString[0] = '\0';
        strcat(outputString, s1);
        strcat(outputString, s2);
        return outputString;
    }

修改:

我没有必要先提醒一下,在完成返回的字符串后,您应该使用free()释放为返回的字符串分配的内存。此外,为了能够调用free()分配的内存,输出类型shold的类型应为char*

答案 1 :(得分:0)

您的问题的简短答案是:

  

是,可以将strcat的返回值分配给变量。它始终等于其第一个参数,但有时将其直接传递给另一个函数很方便:

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

int main() {
    char buf[20];
    printf("%s\n", strcat(strcpy(buf, "Hello "), "world!"));
    return 0;
}

长答案是:

您的代码具有未定义的行为,因为您传递了字符串常量"united"作为strcat()的目标数组。尝试修改字符串常量具有未定义的行为。

您应该这样修改代码:

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

int main() {
    char buf[20];
    const char *str1 = "united";
    const char *str2 = "front";
    char *str3;

    strcpy(buf, str1);
    str3 = strcat(buf, str2);
    printf("%s\n", str3);
    return 0;
}

由于未添加空格,因此输出为:

unitedfront