作者lazy0813 (菜邊巴)
看板C_and_CPP
標題[問題] 擷取檔案名稱後只想輸出前段字元
時間Fri Nov 13 21:53:54 2020
開發平台(Platform): Win10
編譯器:Dev-C++
問題(Question):
小弟目前是C初學者,我想請教版上各位先進。
我目前想要把文件中的檔案名稱擷取前面幾個字元建立成一份清單,
但是不知道該怎麼做,目前想法是應該把字串轉為字元。
btw,檔案名稱為:20110827001040.00.led.01.00-03.00h.jpg
想擷取為20110827001040.00.led.01.00-03.00h
這是我的程式碼:
/*Program*/
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
int main()
{
FILE *fout;
fout=fopen("output.txt","w+t");
if(fout==NULL){
printf("Fail to open file output!\n");
return:
}
struct _finddata_t fileinfo;
long fHandle;
int i=0;
if((fHandle=_findfirst("*.jpg",&fileinfo))==-1L){
printf("no jpg\n");
return 0;
}
else{
do{
i++;
fprintf(fout,"%s\n",fileinfo.name);
}while(_findnext(fHandle,&fileinfo)==0);
}
_findclose(fHandle);
fclose(fout);
system("pause");
return 0;
}
感謝QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.134.82 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1605275636.A.6DD.html
→ ctrlbreak: fileinfo.name[strlen(fileinfo.name)-4]=0; 11/13 22:24
→ ctrlbreak: 顯示前補這行概念是這樣,自己完善XD 11/13 22:24
→ nh60211as: 你有兩個.jpg在同一個檔名要怎麼處理 11/13 22:46
→ loveme00835: 試試看 strstr(), 如果回傳結果剛好是 ".jpg" 就是找 11/13 23:31
→ loveme00835: 到副檔名, 在結果指標以前的字元就是你想找的部分 11/13 23:31
→ ctrlbreak: 3F說的是 xxxx.jpg.bak.jpg這種情況嗎?理論上附檔名 11/14 16:55
→ ctrlbreak: 一定是最後一個.之後的名稱吧? XD 11/14 16:55
→ ChampYen: strrchr 11/14 17:10
謝謝各位的討論,後來我用內部迴圈把字元一個個拉出來了 後來用strstr還是不能解決QQ
※ 編輯: lazy0813 (140.113.134.82 臺灣), 11/25/2020 16:47:23