小编Nan*_*pan的帖子

将char数组初始化为'\ 0'时会发生什么?

我有一个大小为512的字符数组ie

char buffer [512];
Run Code Online (Sandbox Code Playgroud)

某个点之后的此变量被修改为此

buffer [40] = '\0';
Run Code Online (Sandbox Code Playgroud)

这个赋值对变量做了什么?它是否将数组中的前40个char初始化为null?

c

2
推荐指数
1
解决办法
184
查看次数

strcpy后C程序崩溃了

我已经尝试解决这个问题并且最终没有任何结果,我希望你能向我提示正确的方向.我有一个程序,我用这种方式初始化一个char数组:

char variable1[8];
Run Code Online (Sandbox Code Playgroud)

然后我尝试复制函数的返回值,即

...
strcpy(variable1, (char *)function1());
Run Code Online (Sandbox Code Playgroud)

其中function1()返回char数组值.这是function1的结构:

 char* function1()
{
    ....
    char variable2[8]={'\0'};
    ...
    return (variable2);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行strcpy行时程序崩溃.

我已阅读strcpy函数这里

要点:必须确保目标缓冲区(s1)能够包含源数组中的所有字符,包括终止空字节.否则,strcpy()将覆盖缓冲区末尾的内存,导致缓冲区溢出,这可能导致程序崩溃

因此我尝试将variable1大小增加到20,但程序仍然崩溃.

除此之外,我尝试了不同的方法,即使用strncpy函数调用,它仍然给我同样的错误.

奇怪的是我可以执行function1(),它返回一个没有问题的值.只有当我试图复制它时,我的程序崩溃了.我接下来应该做些什么?

c unix

1
推荐指数
1
解决办法
1453
查看次数

Terraform 抛出无效的子网范围错误

当我尝试使用 terraform 创建子网时,我不断收到以下错误。使用 aws 控制台创建子网没有问题。有人可以帮助我吗?

Error: error creating subnet: InvalidSubnet.Range: The CIDR '192.168.1.0/24' is invalid.
    status code: 400
Run Code Online (Sandbox Code Playgroud)

创建 VPC 的代码:

resource "aws_vpc" "vpc_worker" {
  provider             = aws.region-worker
  cidr_block           = "198.168.0.0/16"
  enable_dns_support   = true
  enable_dns_hostnames = true
  tags = {
    Name = "master-vpc-jenkins"
  }
}
Run Code Online (Sandbox Code Playgroud)

创建子网的代码:

#Create subnet in us-west-2
resource "aws_subnet" "subnet_1_worker" {
  provider   = aws.region-worker
  vpc_id     = aws_vpc.vpc_worker.id
  cidr_block = "192.168.1.0/24"
}
Run Code Online (Sandbox Code Playgroud)

地形版本:0.12.29

提前致谢。

amazon-web-services terraform terraform-provider-aws terraform0.12+

1
推荐指数
1
解决办法
1102
查看次数