关于函数 strcpy_s
about the function strcpy_s
我要输出三个国家首字母最小的字母,这是代码:
#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;
}
这段代码strcpy_s(string, str[0]);
,好像可以删除。为什么?
如果您希望循环从 i = 1
开始,行 strcpy_s(string, str[0]);
是必不可少的。
但是,由于您是从 i = 0
开始的,因此如果您还定义了以下开始条件,则并不严格要求:string[0] == CHAR_MAX
和 string[1] == 0
。但如果情况并非如此,那么您将遇到未定义的行为。
我要输出三个国家首字母最小的字母,这是代码:
#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;
}
这段代码strcpy_s(string, str[0]);
,好像可以删除。为什么?
如果您希望循环从 i = 1
开始,行 strcpy_s(string, str[0]);
是必不可少的。
但是,由于您是从 i = 0
开始的,因此如果您还定义了以下开始条件,则并不严格要求:string[0] == CHAR_MAX
和 string[1] == 0
。但如果情况并非如此,那么您将遇到未定义的行为。