Я пишу программу в 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);
^~~~~~
Ошибка компилятора
Проверьте код ниже:
realloc
, а неmalloc
, когда перераспределение не выполняется? Кроме того, вместо последовательных вызововstrcat
вы можете сохранить результатыstrlen
, которые будут использоваться в качестве смещения дляstrcpy
, а не для перемещения по времени строки и время снова (это то, чтоstrlen
делает, чтобы получить длину, иstrcat
), чтобы найти конец строки).strcat возвращает char, который является изменяемым указателем. Он не может использоваться как инициализация массива символов, потому что размер неизвестен во время компиляции.
Следует также отметить, что первый параметр, который вы передаете в strcat, является пунктом назначения, который изменяется вызов, и это то, что возвращается. Для этого вам нужно иметь достаточно большой буфер для хранения содержимого комбинированной строки.
strcat()
(, если он попадет вstrcat()
:)) ,