C言語で文字列の各文字のASCII値を出力するプログラム
文字型データを要素として持つ配列のことを「文字列(string)」と呼びます。
文字列の宣言
文字列は以下の形式で宣言します。
char stringname[サイズ];
例えば char string[50]; と記述すると、最大50文字まで格納できる文字列が定義されます。
文字列の初期化
1文字ずつの文字定数で初期化する方法
char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };
文字列リテラルで初期化する方法
char string[10] = "Hello";
いずれの場合も、文字列の終端を示すヌル文字「\0」が必要になる点に注意してください。
文字列へのアクセス
printf関数などでは、制御文字「%s」を使用することで、終端文字「\0」に到達するまで文字列全体を一度に読み込んで表示できます。
ASCII値を出力するロジック
実行時に入力された文字列の各文字のASCII値を表示するための基本ロジックは以下の通りです。
while(str[i] != '\0'){
printf("\n%c のASCII値 = %d", str[i], str[i]);
i++;
}
ここでは、変換指定子「%c」で文字そのものを、「%d」で対応する数値(ASCIIコード)をそれぞれ出力しています。同じ変数に対して書式を変えるだけで、文字とコード値の両方を簡単に確認できるのがポイントです。
サンプルプログラム
以下は、入力された文字列の各文字のASCII値を順番に表示するCプログラムです。
#include <stdio.h>
int main() {
char string[50];
int i = 0;
printf("Enter the Sentence: ");
gets(string);
while(string[i] != '\0') {
printf("\nASCII Value of %c = %d", string[i], string[i]);
i++;
}
getch();
return 0;
}
注意: gets()関数はバッファオーバーフローを引き起こす危険性があるため、現在のC標準規格では廃止されています。実際の開発では、fgets()などの安全な代替関数を使用することが推奨されます。
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
Enter the Sentence: Tutorials Point ASCII Value of T = 84 ASCII Value of u = 117 ASCII Value of t = 116 ASCII Value of o = 111 ASCII Value of r = 114 ASCII Value of i = 105 ASCII Value of a = 97 ASCII Value of l = 108 ASCII Value of s = 115 ASCII Value of = 32 ASCII Value of P = 80 ASCII Value of o = 111 ASCII Value of i = 105 ASCII Value of n = 110 ASCII Value of t = 116
このように、空白文字にもASCIIコード32が割り当てられていることがわかります。英字や記号など、すべての半角文字には固有のコード値が対応しており、この仕組みを理解すると文字処理プログラムの基礎が身につきます。
-
C言語で正方行列をZ字形に表示するプログラム
プログラムの概要本記事では、C言語を使って正方行列の要素を「Z」の字形に沿って出力するプログラムを解説します。正方行列とは、行数と列数が等しい行列のことです。n行n列の行列は「n次の正方行列」と呼ばれ、2×2、3×3、4×4などの行列が該当します。Z字形出力のアルゴリズム行列の要素をZ字形で表示するには、次の3つの部分を順番に出力します。最上行(1行目):左端から右端までのすべての要素対角成分:右上から左下へ向かう斜めの要素(両端の角は除く)最下行(最終行):すべての要素これらを順につなげると、アルファベットの「Z」の形が完成します。3×3の行列の場合: a00 a01 a02
-
C言語で行列の要素を斜め下方向に出力するプログラム
n×nサイズの配列が与えられたとき、その整数型の行列要素を斜め下方向に出力するのが課題です。「斜め下方向」とは、任意のn×nサイズの配列を、下図のように左上から右下へ斜めに移動しながら順番に出力することを意味します。具体的には、まず「1」を出力し、次に「2」を出力した後、斜め下の「4」へ移動して出力します。この操作を行列のすべての要素に対して繰り返していきます。入力例と出力例入力:Matrix [3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }} 出力:1 2 4 3 5