2013-12-08 43 views
-4

是否可以檢查輸入文件是否想通過控制檯的stdin讀取文本實際上是一個.txt文件?類似這樣的:測試輸入文件是否爲C中的.txt文件

if(argv[1] != "*.txt") 
{ 
    return 1; 
} 

這對我很有幫助! 謝謝!

+4

if(strstr(argv [1],「.txt」)== argv [1] + strlen(argv [1]) - 4)'',顯然經過了一些界限檢查? – 2013-12-08 12:54:44

+0

或者if(strlen(argv [1])> 4 &&!(strcasecmp(argv [1] + strlen(argv [1]) - 4,「.txt」))'對於不區分大小寫的匹配。會告訴它*是否是一個文本文件,只有它有一個文件擴展名。 – usr2564301

回答

1

我猜你正在尋找類似於「文件」命令(這是在所有的Mac OSX和Linux的盒子),它看着一個文件的內容,並告訴你它是什麼類型的文件 - 就像一個「 JPG「圖片或二進制可執行程序,或者...您的案例中的一些簡單的ASCII文本。

下面是運行它的兩個示例:

file /bin/bash 
/bin/bash: Mach-O universal binary with 2 architectures 
/bin/bash (for architecture x86_64): Mach-O 64-bit executable x86_64 
/bin/bash (for architecture i386): Mach-O executable i386 

file /etc/passwd 
/etc/passwd: ASCII English text 

要在C程序中運行這個,你可能會使用「系統()」函數

system("file somefile| grep text") 

,然後檢查「 grep「返回零 - 表示它找到了單詞」text「。

如果你在Windows上,運氣不錯!哎呀,我的意思是,如果你在Windows上,你將不得不研究一個Windows的等價物。