私の教授からの例として、「ゾンビの翻訳者」のコードがあります。私はそれが英語の文字列を取り、機能を介してそれにいくつかのルールを適用すると私が言うことができるから。これを行うには現在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;
}
ので、より具体的に、私はそれは、Visual Studio 2015で正しくコンパイルするためにラインstrcat(zombie, zombie_word);
に何をすべきでしょうか?
これは学年ではないので、私は実際に中間前にこれを理解できるようにしたいと思っています。私は何か似たようなことをする必要がある場合、私は何をすべきかを知るために、_CRT_SECURE_NO_WARNINGSを通してそれを無効にする必要はありません。
おそらくchar変数を文字列などに変更していますか?私はしばらく見回していて、実際のプロセスを見つけることはできません。 ご協力いただきありがとうございます、私はあなたの時間を大変感謝します。マイクロソフトから
問題をstrcpy_sと共有できますか? C++のより良い解決策はstd :: stringですが、strcpy_sの使い方も知っておく必要があります。 –
C++では正解はほとんどの場合 'char *'を 'std :: string'に変換することですが、' strcat'と友人を_sバージョンに置き換えたときに問題が生じた場合、何が問題になりましたか?両者の違いを知るには、[documentation page](https://msdn.microsoft.com/en-us/library/d45bbxx4.aspx)を読んだことがありますか? – user4581301
私のエラーは、他の関数内にのみ存在するようですが、メッセージstrcpy_sを取得しました。エラー:オーバーロードされた関数 "strcpy_s"のインスタンスが引数リストと一致しません。 – lana