gpt4 book ai didi

c - 将 char 数组传递给函数并将内容复制到另一个 char 数组

转载 作者:行者123 更新时间:2023-12-02 09:11:45 24 4
gpt4 key购买 nike

我有一个 char 数组,其中放置了来自命令行的用户输入。我想将该数组传递给函数 foo 并将其内容复制到大小与原始数组中包含的内容。然而我收到了这个警告。我哪里出错了?

char inputBuffer[500];

void foo(char *inputBuffer)
{
char readBuffer[sizeof(inputBuffer)];
strncpy(readBuffer, inputBuffer, sizeof(inputBuffer));
}

warning: argument to 'sizeof' in '__builtin_strncpy' call is the same expression as the source, did you mean to provide an explicit length

最佳答案

在函数foo中,inputBuffer是一个指向char的指针,而不是一个数组。数组和指针不一样。 sizeof 运算符是这一现象最明显的地方之一。

如果对指针使用 sizeof 运算符,它将给出指针的大小(很可能是 4 或 8),而不是它的大小指向。

另请注意,函数参数 inputBuffer 屏蔽了同名的全局变量。

鉴于 inputBuffer 包含用户输入并且可能是一个字符串,您应该使用 strlen 来获取字符串的长度。

void foo(char *inputBuffer)
{
char readBuffer[strlen(inputBuffer) + 1];
strcpy(readBuffer, inputBuffer);
// do something with readBuffer
}

另请注意,指定给 readBuffer 的大小包含一个用于终止空字节的额外字节。

关于c - 将 char 数组传递给函数并将内容复制到另一个 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51290223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com