【问题标题】:strcpy and strcat return an error in cstrcpy 和 strcat 在 c 中返回错误
【发布时间】:2015-11-28 17:21:12
【问题描述】:
   char first[]="aa";               
   strcat(first,ar[0]);

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

我想使用 strcat 和 strcpy。 strcat 有效,但 strcpy 中有错误。我该如何修改它?

【问题讨论】:

  • 请提供完整的可编译示例。
  • char first[]="aa"; 为数组分配了 3 个字节。 strcat() 如何附加到那个?没有房间了。
  • 在第二种情况下,您还没有为指针数组分配任何内存。
  • 但 strcat 工作正常@WeatherVane
  • 必须先初始化指针second

标签: c strcpy strcat


【解决方案1】:

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

  1. 字符串常量指针
  2. 在编译时设置长度的字符数组
  3. 在运行时设置长度的动态字符数组。

对于动态数组,它使用的内存是在程序运行时保留的。下面的程序说明了三种不同的情况。它还提供了一个方便的内存分配宏。

#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;
}

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 2020-10-05
    • 1970-01-01
    • 2017-03-15
    • 2016-12-03
    • 2016-03-14
    • 1970-01-01
    • 2014-08-06
    • 2018-06-21
    相关资源
    最近更新 更多