2017-03-02 18 views
-3

私の教授からの例として、「ゾンビの翻訳者」のコードがあります。私はそれが英語の文字列を取り、機能を介してそれにいくつかのルールを適用すると私が言うことができるから。これを行うには現在strcpystrcatが使用されていますが、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変数を文字列などに変更していますか?私はしばらく見回していて、実際のプロセスを見つけることはできません。 ご協力いただきありがとうございます、私はあなたの時間を大変感謝します。マイクロソフトから

+1

問題をstrcpy_sと共有できますか? C++のより良い解決策はstd :: stringですが、strcpy_sの使い方も知っておく必要があります。 –

+0

C++では正解はほとんどの場合 'char *'を 'std :: string'に変換することですが、' strcat'と友人を_sバージョンに置き換えたときに問題が生じた場合、何が問題になりましたか?両者の違いを知るには、[documentation page](https://msdn.microsoft.com/en-us/library/d45bbxx4.aspx)を読んだことがありますか? – user4581301

+0

私のエラーは、他の関数内にのみ存在するようですが、メッセージstrcpy_sを取得しました。エラー:オーバーロードされた関数 "strcpy_s"のインスタンスが引数リストと一致しません。 – lana

答えて

0

:あなたは、バッファオーバーフローの危険を防止するための配列の長さを含める必要がstrncat_s

APIである:

errno_t strncat_s( 
    char *strDest, 
    size_t numberOfElements, 
    const char *strSource, 
    size_t count 
); 

numberOfElements宛先アレイのサイズです。

+0

これ以上はありません。 'strncpy_s'は、オーバーフロー、切り詰め、クラッシュ、カスタムハンドラを呼び出すための追加オプションのバッチを持っています... – user4581301

+0

' '' strncpy_s(zombie、 ""); '' ' はエラーになります:関数 "strncpy_s"は引数リストと一致します。私は誤解のためにお詫びします、私はparanthesisの内部に配列の長さを置く必要がありますか? – lana

+0

ありがとう!それは今働いている。 – lana

関連する問題