はじめに
組み込みソフトエンジニアとして働いているHyonkichiです。最近ではWEBアプリケーションの開発やAIに興味を持ち、Qiitaを触り始めました。今回が初めての記事投稿となります。paizaとQiitaのキャンペーンを見かけた際、ちょうど良い演習の機会だと感じ、挑戦してみることにしました。この記事では、その演習を通して取り組んだ問題について、解答コードや解説をまとめていきます。
問題へのリンク
解答コード
#include <stdio.h>
#include <string.h>
int main(void){
// 自分の得意な言語で
// Let's チャレンジ!!
char str[1000];
char str1[100], str2[100];
fgets(str, sizeof(str), stdin);
sscanf(str, "%s\n", str1);
fgets(str, sizeof(str), stdin);
sscanf(str, "%s\n", str2);
if( strcmp((char *)&str1[0], (char *)&str2[0]) == 0 )
{
printf("OK");
}
else
{
printf("NG");
}
return 0;
}
解説
今回の問題では、文字列の一致検出を行うプログラムをC言語で実装しました。具体的には、標準ライブラリのstrcmp関数を使用して、2つの文字列が一致するかどうかを判定しています。
*この手の問題に標準ライブラリを使用することはマナー違反?とも思いましたが、大目に見てください..
strcmp関数は非常に便利ですが、使用する際にはいくつかの注意点があります。例えば、strcmpは一致しているかどうかを判定するために、文字列を先頭から順に比較しますが、1つでも違う文字があるとその時点で比較を終了し、違いを示す値を返します。そのため、完全一致だけでなく、部分一致や大小比較の結果を返すこともあり、意図せず不正確な結果を得る可能性があります。
また、strcmp関数は大文字小文字を区別するため、同じ内容でも文字の大小によっては一致しないと判定されることもあります。このような点を考慮し、使い方には注意が必要です。
終わりに
今回の記事投稿を通して、初めてQiitaでの情報発信に挑戦しました。今後も継続的にQiitaを活用していきたいと考えています。Qiitaを通じて他のエンジニアの方々との交流を深めながら、C言語以外の言語も勉強していきたいと思っています。どうぞよろしくお願いいたします。