ファイル名を格納している文字列が “.txt” という拡張子を持っているかどうかを調べる実装例です。
#include <string.h>
bool isTxtFile(const char *fileName) {
const char *ext = strrchr(fileName, '.');
return strcmp(".txt", ext) == 0;
}
bool b1 = isTxtFile("aaa.txt"); // true
bool b2 = isTxtFile("bbb.png"); // false
strcmp
の代わりに stricmp
を使うことで、大文字と小文字を区別しない文字列比較が可能です。
#include <string.h>
bool isTxtFileIgnoreCase(const char *fileName) {
const char *ext = strrchr(fileName, '.');
return stricmp(".txt", ext) == 0;
}
stricmp
を使用できない環境では、以下のような関数で代用することができます。
#include <ctype.h>
int my_stricmp(const char *s1, const char *s2) {
while (toupper(*s1) == toupper(*s2)) {
if (*s1 == '\0') {
return 0;
}
++s1;
++s2;
}
return toupper(*s1) - toupper(*s2);
}