无效的初始值设定项: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;
}
我正在用 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;
}