无效的初始值设定项:strcat(s,str);在 C 程序中

Invalid initializer : strcat(s,str); in C program

我正在用 hackerrank 编写程序并尝试使用 strcat() 函数连接两个字符串,但它对我不起作用。

我是学生,正在学习C语言,你能帮我想办法连接两个字符串吗?

这是我的代码:

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

int main() {
    int i = 4;
    double d = 4.0;
    char s[] = "HackerRank ";

    // Declare second integer, double, and String variables.
    int j;
    double e;
    char str[] = "";

    // Read and save an integer, double, and String to your variables.
    scanf("Enter integer : %d",&j);
    scanf("Enter double : %lf",&e);
    scanf("Enter string : %s",str);

    // Print the sum of both integer variables on a new line.
    int sum = i + j;
    printf("\n %d",sum);

    // Print the sum of the double variables on a new line.
    double doubleSum = d + e;
    printf("\n %lf",doubleSum);

    // Concatenate and print the String variables on a new line
    char finalString[] = strcat(s,str);
    printf("%s",finalString);

    // The 's' variable above should be printed first.
    return 0;
}

错误:

solution.c: In function ‘main’:
solution.c:30:26: error: invalid initializer
     char finalString[] = strcat(s,str);
                          ^~~~~~

Compiler Error

strcat returns 一个 char * 是一个可变指针。它不能用作字符数组的初始化,因为在编译时不知道大小。

还应该注意的是,您传递给 strcat 的第一个参数是调用修改的目标,也是返回的内容。为此,您的目的地需要有足够大的缓冲区来保存组合字符串的内容。

检查以下代码:

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

int main() {
    int i = 4;
    double d = 4.0;
    char s[] = "HackerRank ";
    char *finalString = NULL;
    int j;
    double e;
    char str[100];
    scanf("%d",&j);
    scanf("%lf",&e);
    scanf("%s", &str);
    int sum = i + j;
    printf("\n %d",sum);
    double doubleSum = d + e;
    printf("\n %lf",doubleSum);
    finalString = realloc(finalString, strlen(s) + strlen(str) + sizeof(char));
    strcat(finalString,s);
    printf("\n %s",finalString);    
    strcat(finalString,str);
    printf("\n %s \n",finalString);
   return 0;
}