使用strcpy函数时缓冲区溢出

时间:2014-06-02 09:30:52

标签: c string strcpy

我试图使用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个字符。

感谢您的帮助。

编辑:编辑的代码以显示完整图片

3 个答案:

答案 0 :(得分:3)

您应该使用此代码:

strcpy(movies[j], movie);
恕我直言,定义一个二维数组然后使用它就好像它是一个定义为char [1500]的大型一维数组一样。

另外,您使用哪种编译器为C生成此类消息 - 代码?

答案 1 :(得分:0)

您的复制功能应该是:

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

答案 2 :(得分:0)

最后我解决了这个问题。显然,在电影的结尾#39;没有' \ n'字符和strcpy无法处理它。

添加' \ n'在字符串的末尾解决了问题。