C++プログラミングの学習


序文

C++ プログラミング (第 4 版) 第 5 章 配列を使用したバッチ データの処理


5.5.6 文字配列の応用例

例: 3 つの国名があり、アルファベット順で最初の国を見つける必要があります。関数呼び出しが必要です。

#include <iostream>
#include <string>

using namespace std;

int main() {
    
    
	void smallest_string(char str[][30], int i);
	int i;
	char country_name[3][30];
	for (i = 0; i < 3; i++)
		cin >> country_name[i];
	smallest_string(country_name, 3);
	return 3;
}

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 の代わりに strcpy を使用しており、「strcpy」のような警告が表示されます
: この関数または変数は安全でない可能性があります。代わりに strcpy_s の使用を検討してください。非推奨を無効にするには、_CRT_SECURE_NO_WARNINGS を使用してください。詳細については、オンライン ヘルプを参照してください

Visual Studio バージョン 2022 を使用しています。

解決

  1. [プロジェクト プロパティ] を見つけ、[C++] の [プリプロセッサ] をクリックし、[プリプロセッサ] を編集して、コード _CRT_SECURE_NO_WARNINGS を追加します。ここに画像の説明を挿入
  2. strcpyをstrcpy_sに書き換えます。

Microsoft からのこの種の警告は、主に C ライブラリの関数が原因です。多くの関数はパラメータ検出を実行しません (範囲外のクラスを含む)。Microsoft は、これらの関数を使用するとメモリ例外が発生することを懸念し、パラメータ検出機能と同様の機能を追加しましたので、これらの新機能を利用することで、より安全で便利になります。

おすすめ

転載: blog.csdn.net/qq_52992084/article/details/131157868