2017-03-22 8 views
1

をstrcpy_s、これはコードです。このコードstrcpy_s(string, str[0]);は私が出力に3カ国の最初の文字の最小の手紙をしたい

#include<iostream> 
#include<string> 
using namespace std; 
int main() 
{ 
    void smallest_string(char str[][30], int); 
    int i; 
    char country_name[3][30]; 
    for (i = 0; i < 3; i++) 
     cin >> country_name[i]; 
    smallest_string(country_name, 3); 
    system("pause"); 
} 
void smallest_string(char str[][30], int n) 
{ 
    int i; 
    char string[30]; 
    ***strcpy_s(string, str[0]);*** 
    for (i = 0; i < n; i++) 
     if (strcmp(str[i], string) < 0) 
      strcpy_s(string, str[i]); 
    cout << endl << "the smallest string is:" << string << endl; 
} 

、それを削除することができるようです。どうして?

+1

あなたはその行を削除すると 'string'に何があると思いますか? (なぜ、 'std :: string'の代わりに' char'配列を使用していますか?) – UnholySheep

+0

文字列[30]の各要素に割り当てる必要はないようです。 –

+0

C++を書いているので、 'std :: 'char []'の生の配列ではなく、 'vector'と' std :: string'を使用します。 – Sean

答えて

1

i = 1からループを開始する場合は、strcpy_s(string, str[0]);行が必須です。

i = 0から開始するので、次の開始条件を定義する場合は、厳密には必要ありません。string[0] == CHAR_MAXおよびstring[1] == 0。しかし、そうでない場合は、未定義の動作が発生します。

関連する問題