配列に関しての記事です。
文字列との関係性についても解説しています。
配列
配列とは、複数の同じ型の変数を1つにまとめたものです。
大量のデータを扱う際に配列を用いると、効率良くコーディング出来ます。
最初に箱の個数を指定して、指定の番号の箱に値を入れていくようなイメージです。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a[5];
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
a[4] = 50;
printf("%d\n", a[1]);
printf("%d\n", a[3]);
return 0;
}
出力
20
40
for文と配列を組み合わせると、効率良くコードを記述することが出来ます。
また、[]に何も入力しない場合は、要素数を自動的に決定してくれます。
コーディング例②
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a[] = { 1, 2, 3, 4, 5 }, i;
for (i = 0; i < 5; i++)
printf("%d\n", a[i]);
return 0;
}
出力
1
2
3
4
5
文字列
文字列は、配列の要素に一つずつ文字を入力したものです。
文字列の最後には、\0【NULL文字】を入力します。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
char a[7] = { 'M', 'O', 'N', 'D', 'A', 'Y', '\0' };
printf("%s\n", a);
a[0] = 'S';
a[1] = 'U';
printf("%s\n", a);
return 0;
}
出力
MONDAY
SUNDAY
コーディング例②
文字列は配列なので、要素を入れ替えることも可能です。
#include <stdio.h> // printf()を使用するために必要
int main()
{
char a[6] = "ABCDE";
char b[6];
int i = 0;
while (a[i] != '\0')
{
b[i] = a[4-i];
++i;
}
b[5] = '\0';
printf("%sを逆さ読みすると、%sになる。\n", a, b);
return 0;
}
出力
ABCDEを逆さ読みすると、EDCBAになる。
文字列関数
strlen()
文字列の長さを取得する関数です。
ストリングレンと読みます。
strlen(文字列)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // 文字列関数を使用するために必要
int main()
{
char a[] = "Nonbirimaru";
int length;
length = strlen(a);
printf("%d\n", length);
return 0;
}
出力
11
strcpy_s()
文字列をコピーする関数です。
ストリングコピーと読みます。
strcpy_s(コピー先, 文字列)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // 文字列関数を使用するために必要
int main()
{
char a[] = "Nonbirimaru";
char b[6];
strcpy_s(a, "Hello World");
strcpy_s(b, "ABCDE");
printf("%s\n", a);
printf("%s\n", b);
return 0;
}
C言語では、strcpy()だったのですが、strcpy_s()にしないとエラーが発生します。
出力
Hello World
ABCDE
strcat_s()
文字列を結合する関数です。
ストリングキャットと読みます。
strcat_s(A, B)
catは、concatenation【連結】の略称のようです。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // 文字列関数を使用するために必要
int main()
{
char a[15] = "This ";
char b[] = "is a ";
char c[] = "pen.";
strcat_s(a, b);
strcat_s(a, c);
printf("%s\n", a);
return 0;
}
出力
This is a pen.
C言語では、strcpy()だったのですが、strcpy_s()にしないとエラーが発生します。
3つ以上の文字列を結合する場合は、複数回に分けて結合する必要があります。
また、配列の大きさを超えると、エラーが発生します。
strcmp()
文字列を比較する関数です。
ストリングコンプと読みます。
strcmp(A, B)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // 文字列関数を使用するために必要
int main()
{
char a[] = "ABC";
char b[] = "DEF";
int c = strcmp(a, b);
printf("%d\n", c);
return 0;
}
出力
-1
数値の意味
変数の値 | 意味 |
---|---|
c = 0 | AとBは等しい |
c = -1 | AはBよりも辞書で前に位置する |
c = 1 | AはBよりも辞書で後に位置する |
コーディング例②
#include <stdio.h> // printf()を使用するために必要
#include <string.h> // 文字列関数を使用するために必要
int main()
{
char a[] = "ABC";
char b[] = "ABC";
char c[] = "ABCD";
int d = strcmp(a, b);
int e = strcmp(a, c);
int f = strcmp(c, a);
printf("%d\n", d);
printf("%d\n", e);
printf("%d\n", f);
return 0;
}
出力
0
-1
1
sprintf_s()
文字列を生成するための関数です。
エスプリントエフと読みます。
sprintf_s(コピー先のポインタ, 第一引数のサイズ, フォーマット, 数値)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
char a[20];
sprintf_s(a, sizeof(a), "%f", 123.45);
printf("%s\n", a);
return 0;
}
出力
123.450000
atoi
文字列を数値に変換する関数です。
エイトゥーアイと読みます。
atoi(○○)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
#include <stdlib.h> // atoi()を使用するために必要
int main()
{
char a[] = "12345";
int b = atoi(a);
printf("%d\n", b);
return 0;
}
出力
12345
多次元配列
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int i, j;
int a[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
for(i = 0; i < 2; ++i) {
for (j = 0; j < 3; ++j)
printf("a[%d][%d] = %d ", i, j, a[i][j]);
printf("\n");
}
return 0;
}
出力
a[0][0] = 1 a[0][1] = 2 a[0][2] = 3
a[1][0] = 4 a[1][1] = 5 a[1][2] = 6
¥20,800 (2023/05/16 22:17時点 | Amazon調べ)
ポチップ
¥36,980 (2023/05/16 22:17時点 | Amazon調べ)
ポチップ