文字列に関しての記事です。
文字列の仕組みやstrcpy_s()関数について解説しています。
文字列とは?
文字列とは、文字の集まりのことです。
C++においては、配列で表されます。
文字列の仕組み
文字列の最後には、NULL文字【\0】が必要になってきます。
NULL文字【\0】は、画面には表示されません。
『Hello』という文字列を例に出すと、{H,e,l,l,o,\0}のように文字数+1個分の入れ物が必要になります。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
	char a[6] = "Hello";
	char b[] = "こんにちは"; // 文字数+1の配列を自動的に用意
	printf("%s\n", a);
	printf("%s\n", b);
	return 0;
}出力
Hello
こんにちはb[] = "こんにちは"のように、[]の中身を省略すると、文字数+1の配列を自動的に用意してくれます。
コーディング例②
ちなみに、日本語【全角】の場合は、1文字で2文字【2バイト】の容量が必要となります。
カタカナの場合は、半角にすることで、1バイトの容量で表現できます。
#include <stdio.h> // printf()を使用するために必要
int main()
{
	char a[6] = "コンニチハ";
	printf("%s\n", a);
	return 0;
}出力
コンニチハひらがな・漢字の場合は、半角が存在しないので、必ず2バイト分が必要となります。
strcpy_s()
文字列の変数に値を代入する場合、【=】が利用できるのは初期化時のみです。
それ以外のケースでは、strcpy_s()を利用します。
strcpy_s(代入先, 配列の大きさ, 値)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // strcpy_s()を使用するために必要
int main()
{
	char a[] = "こんにちは"; // 文字数+1の配列を自動的に用意
	char b[12];
	char c[11];
	strcpy_s(b, 12, "Nonbirimaru");
	strcpy_s(c, 11, a);
	printf("%s\n", a);
	printf("%s\n", b);
	printf("%s\n", c);
	return 0;
}出力
こんにちは
Nonbirimaru
こんにちはstrcpy()を使うと
C++を勉強する前にC言語を勉強していると、strcpy()を使うと書かれていました。
しかし、Visual Studioでは、strcpy()を使うと『代わりにstrcpy_s()を使え』というエラーが発生します。
理由としては、strcpy()では安全性に難があるからのようです。
使い方は、strcpy(a, b)だったものを、strcpy_s(a, 配列の大きさ, b)と書くだけです。
キーボード入力
scanf_s()
scanf_s()は、キーボードで入力したデータを、指定した書式で変数・配列に格納する関数です。
scanf_s(書式指定, 格納先アドレス); // 数値
scanf_s(書式指定, 格納先アドレス, 文字列の最大長); // 文字列
コーディング例①
#include <stdio.h> // printfを使用するために必要
int main()
{
	int a;
	char b[10];
	scanf_s("%d", &a);
	scanf_s("%s", b, 10);
	printf("%d\n", a);
	printf("%s\n", b);
	return 0;
}出力
5
abcde
5
abcde上記の例では、『5』と『abcde』をキーボードで入力しています。
gets_s()
gets_s()は、キーボードで入力した1行分の文字列を配列に格納する関数です。
gets_s(格納先のポインタ, 第一引数のサイズ);
コーディング例①
#include <stdio.h> // printfを使用するために必要
int main()
{
	char b[10];
	gets_s(b, sizeof(b));
	printf("%s\n", b);
	return 0;
}出力
abcde
abcde上記の例では、『abcde』をキーボードで入力しています。
getchar()
getchar()は、キーボードで入力した文字の1文字目を変数に格納する関数です。
コーディング例①
#include <stdio.h> // printfを使用するために必要
int main()
{
	char a;
	a = getchar();
	printf("%c\n", a);
	return 0;
}出力
ABCDE
A上記の例では、『ABCDE』をキーボードで入力しています。
 ポチップ
					ポチップ
				
 
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
  
  
  
   
     
					 
					
