請問各位有沒有現成的程式可以抓取純文字檔中的特定字串資料?
例如說純文字檔中會隨情況出現 "Timer"的字串,
然後我想抓的是"Timer"後面的資料.
不知道各位有沒有現成的程式或是要如何寫script來完成這樣的事情?
2006-12-26 18:54:40 · 3 個解答 · 發問者 又笨又蠢 2 in 電腦與網際網路 ➔ 程式設計
以下僅供參考
其實還有更好的寫法突然忘記怎麼寫了
只記得還要一段掃描陣列把關鍵字取出來的程式還有位址計算
#include
#include
int main(int argc, char *argv[])
{
FILE *fp;
char str[256];
int a,b,c,d,s;
fp = fopen("script.txt","r+");
if( fp == NULL)
{
return 0 ;
}
while((fgets(str,sizeof(str),fp)) != 0 )
{
if(str[0] == '\n' || str[1]!= ':')
{
continue;
}
if(str[0] == 'T' and str[1] == 'i' and str[2] == 'm' and str[3] == 'e' and str[5] == 'r' ) //目標位置
{
sscanf(str+2,"%d %d %d %d",&a,&b,&c,&d);
s = a+b+c+d;
printf("%d %d %d %d=%d\n",a,b,c,d,s);
}
}
fclose(fp);
system("PAUSE");
return 0;
}
2006-12-27 19:15:00 · answer #1 · answered by 永恆的破壞 5 · 0⤊ 0⤋
Input file: Timer
Timer 1234
# asdsadasd asdad Timer kk
Timer: Good friend
sadaskdj;asda Tim
Rad
o empty lines
Timer 321314:
ad asd Timer adsad a asdasd Timer dadsa 2 Timers
sada
===
script:
awk -FTimer '/Timer/ {print "["$0"]"; for(i=2;i<=NF;i++) print $i}' < Timer
[Timer 1234]
1234
[# asdsadasd asdad Timer kk]
kk
[Timer: Good friend]
: Good friend
[Timer 321314:]
321314:
[ad asd Timer adsad a asdasd Timer dadsa 2 Timers]
adsad a asdasd
dadsa 2
s
拿掉原始行
awk -FTimer '/Timer/ {for(i=2;i<=NF;i++) print $i}' < Timer
2006-12-27 15:27:54 · answer #2 · answered by Chiu 4 · 0⤊ 0⤋
假如純文字檔內容是…
Timer 18:30pm
在 C 語言 (DOS 介面) 裡就可以使用 fprintf 或是 fgets 擷取文字檔案內的字串,整行擷取後,用 strtok 取出指定的字串。
字串處理函式標頭檔 string.h 或 cstring
2006-12-27 11:06:29 · answer #3 · answered by Big_John-tw 7 · 0⤊ 0⤋