2008年5月28日 星期三

char *strtok(char *str1, const char *str2)

屬於 string.h 的一個好用函式,可以將一個字串分割成一個一個的 token,第一次將 str1 傳給它以後,接著再呼叫此函式時,使用 NULL 當 str1,會自動接續到前一個 token 後面繼續讀,可以看看第一份參考資料的例子,再讀讀第二份參考資料的解釋,會比較容易瞭解,另外有一點要注意的是,str1 不是 const 型態,strtok 會修改 str1 這個字串裡面的資料,將包含有 str2 的字元改成 ' \0 ',所以接下來只能透過它所回傳的 pointer 來繼續使用這個字串,如果使用上出現問題,可以檢查自己所傳的 str1 有沒有問題 ( 剛剛 Google 時,看到某個人的血尿控訴 XDD~ )。

Example:
char *p_token,input[50]="Hamdy@Cairo Conrado@MexicoCity"
puts(input);
p_token=strtok(input,"@ \0");
strcpy(sender[0],p_token);
puts(input);
p_token=strtok(NULL,"@ \0");
strcpy(sender[1],p_token);
puts(input);
putchar('\n');
puts(sender[0]);
puts(sender[1]);

呼叫兩次 strtok() ,將所得到的 token 分別存進 sender[0] 與 sender[1] 兩個字元陣列,然後印出呼叫前與呼叫後的 input,得到的結果是
Hamdy@Cairo Conrado@MexicoCity
Hamdy
Hamdy

Hamdy
Cairo

參考資料:
http://www.cplusplus.com/reference/clibrary/cstring/strtok.html
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.14.html#strtok

2008年5月21日 星期三

Customize GNU Emacs On Windows

1. Set " Home Directory ":
  • 「Start Menu」 -> 「Run」 -> Enter " regedit "
  • 「HKEY_CURRENT_USER \ Software \ GNU \ Emacs」(If not exist , your can add those keys by yourself),add a Value 「HOME」,fill in the path You want to use for Home Directory
  • Typing " C-x d ~/ " in Emacs to see if you have changed the Home Directory's location
2. Customize Emacs :
  • Create a file named " .emacs " in your Home Directory
  • Use this file to customize your Emacs with Emacs Lisp,I changed the background color and the font," M-x describe-font " is a useful command :)
  • following is my " .emacs "
(set-background-color "WhiteSmoke")
(set-face-font 'default "-outline-Bitstream Vera Sans Mono-normal-r-normal-normal-15-112-96-96-c-*-iso8859-1")

Reference:
Installing Emacs (GNU Emacs FAQ For MS Windows)
Emacs Lisp
(GNU Emacs Lisp Reference Manual)
Set Fonts (Emacs Wiki)

2008年5月8日 星期四

739 Soundex Indexing

題目網頁:http://online-judge.uva.es/problemset/v7/739.html

我是用 gets() 讀名字進來,結果 WA 了兩三次,後來才發現可能是 EOF 的問題,改成
while(gets(input)!=NULL&&isupper(input[0])!=0)


就順利 AC 了 :)