strcpy和strcat在c中返回错误

时间:2015-11-28 17:21:12

标签: c strcpy strcat

   char first[]="aa";               
   strcat(first,ar[0]);

   char *second[10];   
   strcpy(second[0],first);

我想使用strcat和strcpy。 strcat有效,但strcpy有错误。我怎么修改它?

1 个答案:

答案 0 :(得分:0)

在C语言中,基本上有三种字符串/字符数组变量:

  1. 字符串常量指针
  2. 在编译时设置长度的字符数组
  3. 动态字符数组,其中长度在运行时设置。
  4. 对于动态数组,程序运行时会保留它使用的内存。下面的程序说明了三种不同的情况。它还为内存分配提供了方便的宏。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define NEW_ARRAY(ptr, n) \
        { \
            (ptr) = malloc((n) * sizeof (ptr)[0]); \
            if ((ptr) == NULL) { \
                fprintf(stderr, "error: Memory exhausted\n"); \
                exit(EXIT_FAILURE); \
            } \
        }
    
    int main(void)
    {
        const char *s1 = "foo";
        char s2[4] = "bar";
        char *s3;
    
        NEW_ARRAY(s3, 4);
        strcpy(s3, "baz");
    
        return 0;
    }