繁体   English   中英

使用strcpy函数时的缓冲区溢出

[英]Buffer Overflow when using strcpy function

我正在尝试使用strcpy以便将字符串放入字符串数组中。 这是我对数组的定义:

char movies[10][150], movie[150];
int i = 0, j = 0;

currentChar = getchar();

while(currentChar != EOF)
{
    while(currentChar!='\n')
    {
        movie[i] = currentChar;
        currentChar = getchar();
        i++;
    }

    strcpy(*(movies + j*10*15), (char*)movie);
    j++;
    currentChar = getchar();
}

尝试在c ++控制台中对其进行调试时,收到“缓冲区太小”消息。

注意:我的输入是“不剃Django:有点血腥,但总体来说很坚固”,不超过150个字符。

感谢您的帮助。

编辑:已编辑代码以显示全图

您应该改用以下代码:

strcpy(movies[j], movie);

恕我直言,先定义一个二维数组然后再使用它就像将其定义为char [1500]一样是一个大的一维数组是没有意义的。

另外,您正在使用哪个编译器为C代码生成这样的消息?

您的复制函数调用应为:

strcpy((movies + j*150), (char*)movie);

最后我解决了这个问题。 显然,在“电影”结尾没有一个“ \\ n”字符,而strcpy无法处理它。

在字符串末尾添加“ \\ n”可以解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM