我的代碼爲「殭屍翻譯」作爲示例來自我的教授。從我可以告訴它需要一串英文單詞,並通過函數應用一些規則。它目前使用strcpy
和strcat
來做到這一點,但即使我將它們更改爲strcpy_s
,它也不會編譯。而不包括其他功能(對於空間的緣故),這裏是我的主要功能爲例使用char *替代已棄用的strcpy/strcat *
int main()
{
char english[MAX];
char zombie[MAX];
char zombie_word[MAX];
int pos_e; /* Current position in english line of text */
int pos_z; /* Current position in line of translated zombie text */
while (1) {
pos_e = 0;
pos_z = 0;
strcpy(zombie, "");
cout << ("Enter English text: ");
cin >> english;
/* This loop translates the line from english to zombie. */
do
{
get_next_word(english, &pos_e, zombie, &pos_z);
translate_word(english, &pos_e, zombie_word, &pos_z);
strcat(zombie, zombie_word);
} while (pos_e < strlen(english));
print_translation(zombie);
}
return 0;
}
所以更具體,我應該怎麼做才能行strcat(zombie, zombie_word);
使它在Visual Studio 2015年正確編譯?
這不是一個等級,我真的很想在中期之前就能理解這一點,而且玩起來有點困難。我寧願不必通過_CRT_SECURE_NO_WARNINGS來禁用它,以便我知道如果我需要做類似的事情該怎麼做。
也許改變char變量爲字符串或類似的東西?我一直在尋找一段時間,並找不到實際的過程。 非常感謝您的任何幫助,我非常感謝您的時間。
你可以分享什麼問題與strcpy_s?對於C++來說更好的解決方案是std :: string,但是你可能需要知道如何在某個階段使用strcpy_s。 –
在C++中,正確的答案几乎總是將'char *'轉換爲'std :: string',但當您用_s版本替換'strcat'和朋友時出於興趣,出了什麼問題?您是否閱讀了[文檔頁面](https://msdn.microsoft.com/en-us/library/d45bbxx4.aspx)以瞭解兩者之間的差異? – user4581301
我的錯誤似乎只存在於其他函數中,我得到消息strcpy_s錯誤:沒有重載函數「strcpy_s」的實例匹配參數列表。 – lana