声明char *不适用于strcat()

时间:2018-06-21 11:52:22

标签: c

此代码编译无误,但在打开应用程序时显示:

  

file.exe停止工作

#include <string.h>
#include <stdio.h>
int main() {
  char *a = 'Hello';
  char *b = 'World';
  strcat(a,b);
  puts(a);
}

我哪里出错了?

3 个答案:

答案 0 :(得分:2)

您需要分配足够的空间,并使用双引号而不是单引号。您可以使用数组。

#include <string.h>
#include <stdio.h>
int main() {
  char a[20] = "Hello";
  char b[10] = "World";
  strcat(a,b);
  puts(a);
}

答案 1 :(得分:1)

常量字符串不可修改。这是在C中声明,初始化和修改字符串缓冲区的正确方法:

#include <string.h>
#include <stdio.h>
int main() {
   char a[20];
   char *b = "World";
   strcpy(a,"Hello");
   strcat(a,b);
   puts(a);
   return(0);
}

答案 2 :(得分:1)

您不能在字符指针上执行strcat。您只能对字符数组执行strcat...。对不起,我的先例答案是,查看下面的代码:

#include <string.h>
#include <stdio.h>
int main() {
   char a [20];
   char b[20];
   strcpy(a,"Hello");
   strcpy(b,"World");
   strcat(a,b);
   puts(a);
   return(0);
}