[英]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.