指定した文字列がキーワード(予約語)かどうかを判定するC言語プログラム
キーワード(Keyword)とは、あらかじめ言語仕様によって定義された予約語のことです。固定された意味を持っており、コンパイラが内部的な処理を行うために使用します。プログラマーはキーワードを変数名や識別子として使用することができません。
C言語の32個のキーワード一覧
C言語には以下の32個のキーワードが存在し、これらはすべて小文字で表記されます(auto、break、case、const、continue、int など)。なお、この32個のキーワードはC++言語でもそのまま使用できます。
| auto | double | int | struct |
| break | else | long | switch |
| case | enum | register | typedef |
| char | extern | return | union |
| const | float | short | unsigned |
| continue | for | signed | void |
| default | goto | sizeof | volatile |
| do | if | static | while |
また、C++では上記に加えて、class、new、template、try、catch、private、public、protected など、Cには存在しない30個以上の予約語が追加されています。
入力:str = "for" 出力:for is a keyword
判定方法の考え方
キーワードは予約語であるため、プログラム内で変数名として使うことはできません。
C言語のキーワードは全部で32個です。
判定の手順はシンプルで、入力された文字列を32個のキーワードすべてと順番に比較し、一致するものがあればその文字列はキーワードであると判断します。
文字列の比較には、標準ライブラリ <string.h> にある strcmp関数 を利用します。strcmp関数は2つの文字列が完全に一致した場合に0を返すため、戻り値が0かどうかを確認することで一致を検出できます。
サンプルプログラム
#include <stdio.h>
#include <string.h>
int main() {
char keyword[32][10] = {
"auto", "double", "int", "struct", "break", "else", "long",
"switch", "case", "enum", "register", "typedef", "char",
"extern", "return", "union", "const", "float", "short",
"unsigned", "continue", "for", "signed", "void", "default",
"goto", "sizeof", "volatile", "do", "if", "static", "while"
};
char str[] = "for";
int flag = 0, i;
/* 入力文字列を全キーワードと比較 */
for(i = 0; i < 32; i++) {
if(strcmp(str, keyword[i]) == 0) {
flag = 1; /* 一致したらフラグを立てる */
}
}
if(flag == 1)
printf("%s is a keyword\n", str);
else
printf("%s is not a keyword\n", str);
return 0;
}実行結果
for is a keyword
プログラムのポイント
キーワードの一覧を2次元配列
char keyword[32][10]として格納しています。forループで32個のキーワードを順に取り出し、strcmp関数で入力文字列と比較します。
一致が見つかった場合はフラグ変数 flag を1に設定し、ループ終了後にフラグの値に応じて結果を出力します。
なお、比較対象の文字列に「which」のような一般の単語を代入すれば、「which is not a keyword」という出力になります。このように、キーワード配列との照合によって任意の文字列が予約語かどうかを簡単に判定できます。
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列