2012-01-20 63 views
0

一些细节提取一个文件的扩展名

  • 语言:C
  • 的操作系统:Linux;用命令行(终端)工作, 文件通过终端
  • 用户体验为C阅读:3 个月

我一直在试图提取一个给定的文件,例如“MYFILE的延伸。 wld“,以便稍后我可以检查在处理文件内容之前是否在终端输入了正确类型的文件。这对于任务是必需的

我已经使用函数“strtok”将输入分隔为一个分隔符“。”。现在

dot=strtok(argv[1], "."); 
filename=dot; 

文件名输入“MYFILE”的第一部分,我的问题是如何获得的第二部分之后的“”,请指教,并请耐心地使它简单尽可能使我可以让你的答复使用

感谢

+0

如果有多个“。”,该怎么办?在文件名? – Dmitri

回答

2
char *extension; 
extension=strtok(NULL, "."); 

上面的代码之后。

首先,拨打strtok(),指向str这样的strtok(str, ".")
然后继续为下一个令牌调用strtok(NULL, ".")
当返回值为空(\0)时,它是字符串的结尾。

0

呼叫strtok在NULL再次传递作为参数:

extension=strtok(NULL,".") 

strtok第一个电话应该指向要切分的字符串。之后的所有调用都应该具有NULL作为第一个参数,strtok将返回标记,直到它处理完第一个调用中传入的整个字符串为止。

0

文件名可能包含多个“。”:foo。例如,bar.buz。与您的代码,你会得到bar.buz的代替foo.barBUZ预期。正确的方法是使用像这样的东西:

char *filename = argv[1]; 
char *ext = strrchr(argv[1], '.'); 
if (ext) { 
    *ext = '\0'; 
    ext++; 
}