簡體   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