用C获取文件的扩展名

Iri*_*Dog -1 c string text-files

我正在尝试在C中编写一个函数来获取文件的扩展名.所以这是我的代码

char *getFileNameExtension(char *filename){
    char *ext = memchr(filename, '.',strlen(filename));
    return ext;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,当我试图检查特定的文件类型,如文本文件(.txt)时,我使用此代码

if (getFileNameExtension(filename)==".txt"){
   printf("%s\n",filename);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我试图将两个字符串打印为整数和字符串

printf("%s %s",".txt",getFileNameExtension(txtFile));
printf("%d %d",".txt",getFileNameExtension(txtFile));
Run Code Online (Sandbox Code Playgroud)

第一个输出是好的,我得到:.txt .txt,但是当我将它们打印为整数(我猜的是ascii代码)时,我得到了这个结果:27918619 4196714.此外,每次执行代码时,第一个字符串的int值都会更改(由于我猜的内存位置不同).有人可以帮忙吗?

小智 5

你无法比较那样的字符串,你正在使用的是指针比较......

这是正确的版本:

if (strcmp(getFileNameExtension(filename), ".txt") == 0)

我建议在C字符串上阅读更多内容.

此外,谷歌的一个亮点:

What if the filename have multiple "extensions"? Use e.g. strrchr to get the last dot. – Joachim Pileborg