2008年10月18日 星期六

懇親假

懇親假終於到了,感謝爸媽一大早六點半就到了營區早早把我領了出來,雖說都要到下午一點多才可以放人,但能先被領出去感覺還是不一樣,整個人放鬆好多。這十天真的是渡日如年阿,害我天天都在盼望懇親這天。

之前從網路上得知官田營區有官田渡假村的名號,經過我進去探查十天的結果,發現這根本就是騙人的。也不是說很操,但我覺得最不能適應的就是每次的集合都好趕,才剛上去寢室就要馬上衝下去集合。偏偏內務櫃在遙遠的一端,只要需要換裝或是拿碗筷的時候,都跑的相當匆忙,好幾次都差點趕不上集合。另一個感到痛苦的就是單兵戰鬥教練,也就是全副武裝,鋼盔、S腰帶、步槍,然後在看似草地上(其實都是沙土和碎石),不斷的臥倒、伏進、戰鬥蹲姿等(還有更誇張的以足節蟲方式移動)。其實若單純操這些課也就算了,但台南天氣真的是太熱了,好幾次都快暈了。

目前對我來講,新訓的熱趣僅剩下認識了新的朋友、午餐有冰棒、晚餐有甜湯,出外操單兵可以打小蜜蜂,其它的回憶都是痛苦的。

明後天是懇親假,但實際上也只有放明天而已,因為後天早上十一點半就要集體去搭車返營了。但也已經無法思考明天要做什麼,在家休息吧~~

2008年10月7日 星期二

國軍Online

在畢業和等兵單這段時間,總感覺渡日如年,時間過得好慢。但就在收到兵單後,沒想到一轉眼明天就要入伍了。既然這是應盡的義務,所以就趕緊調整好心情,玩玩大家所稱呼的國軍Online。
現在當兵不再像以前那樣兩年那麼久,一年再扣掉軍訓課折抵的役期,算一算,十一個月又八天,也許一轉眼就過了。
那入伍前一天的心情是如何呢?其實也不會特別緊張,反而感覺腦袋有點空空的。作息和之前沒什麼兩樣,烏龍派出所還是照看,電動還是照打。唯一比較不同的就是像程式要花腦力的東西這三四天都沒再碰了。
再沒多久就要去睡覺了,醒來後,即將面對的是截然不同的生活,或許一開始還不太能適應,但還是希望可以在軍旅生涯留下美好的回憶。

2008年10月5日 星期日

平安之旅

因為快入伍了,所以今天一早就被我爸挖起來,帶我回宜蘭老家拜拜,這對於那麼久沒早起的我真是一大折磨,因此我一路從台北睡到宜蘭,但其實也只是多睡了一個小時而已,雪隧實在是太快了。然而這次的回鄉之旅卻有一個意外的收穫,那就是姑姑包給了我兩千元紅包,在要回台北的時候,阿嬤也給我了一個兩千塊的紅包。這是自從畢業後,難得唯一的收入了,這段等當兵的日子,可以說是日不敷出,一直在花老本阿。 在要準備開車回台北的時候還發生了一個小插曲,那就是車子輪胎旁邊竟然有一隻蛇,這可真是嚇死我了。這還是第一次在宜蘭家看見有蛇的蹤跡。看了一下,感覺這條蛇沒啥攻擊性,我爸最後拿了竹掃把把他趕出家門口,然後他就很快從外面的大水溝的一個小洞跑走了。 在回家的途中,又順道去了行天宮拜拜,我爸還搞笑說他要去行天宮裡面收驚一下,說被蛇嚇到了。但可惜的是今天行天宮好像是有舉行什麼儀式,所以沒有提供收驚服務,只好做罷囉。 在離開行天宮就快到家的時候,又臨時提議要到二重疏洪道旁的微風運河走走,所以又繞到那去了。算一算,也好久沒來了,感覺變好多,雖然就在家附近而已,卻沒來過幾次。二重疏洪道現在真的變得蠻漂亮的,還有長長的腳踏車道,而且還可以直通八里左岸。以後有機會應該來騎一下的。

其實不能釣魚,卻還是一堆人手裡拿著釣竿

2008年10月4日 星期六

久違的球賽

自從收到兵單後,就想說應該要多出去走走,不能老待在家裡。所以阿,當初就想說一定要在入伍前到現場看一場棒球賽,而今天終於如願以償了,和阿佑、小武一同去新莊看了統一獅出戰米迪亞暴龍的比賽。同時這也是他們兩個人現場看職棒的處女秀。
距離上次在新莊球場看棒球是我高中的時候,感覺好久遠喔。新莊球場不管外野還是內野都有椅子,蠻乾淨的,坐起來也舒適,不像在台中球場或是以前的台北市立棒球場都只能坐水泥地。
而距離上次到現場看棒球的時候,是在台中球場看統一上半球季封王那場比賽。所以一年也才只看了這麼兩場,好像太不給他捧場了。而以後當兵、出社會後看的機會不就更少了。

來說說今天的比賽好了,今天是暴龍的主場,但到現場後很明顯看到獅迷人數還是多很多。今天依舊是坐在外野,遠離那加油聲,同時也比較便宜囉。不過,今天的比賽真的很神奇,兩隊總共加起來得到十分,但竟然只花了兩小時又十二分鐘就結束比賽了。還有今天覺得比較可惜的就是布雷今天沒有發揮,害我多帶了兩個幫手也沒機會撿全壘打球。





比賽結束後,大家就提議去船老大吃大餐。記得以前也在這歡送同學們去當兵,現在換他們歡送我了。

2008年10月2日 星期四

bool

在C99有新增了bool型態,定義在stdbool.h。然而若所使用的編譯器還沒支援到C99的話,可以用:
enum bool {false, true};
如此也可以達到同樣的目的。

2008年10月1日 星期三

memcpy() memmove()

若要執行字串複製的話,可以使用strcpy()和strncpy()來達成。然而,若非字元陣列型態的該如何複製呢?一般可能會想到用迴圈一個接著一個複製過去。在string.h裡其實還提供兩個好用的函式:memcpy()和memmove(),他們的prototype分別為:

void *memcpy(void * restrict s1, const void *restrict s2, size_t n);
void *memmove(void *s1, const void *s2, size_t n);

這兩個函式都是將s2複製到s1,差別在於memcpy()是假設s1與s2沒有重疊區域,所以若將memcpy用來有重疊的區域上的話,會造成無法預期的結果。最後一個參數是總共要複製多少個Bytes。

qsort

Quick sort是非常有效率的排序演算法,而C也有實作了quick sort的演算法,名為qsort。我們可以用它來快速的排序陣列。

qsort的prototype為
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

總共有四個參數,第一個參數為指向我們要排序的陣列第一個位址的指標;第二個參數則是總共有幾個元素要排序;第三個參數為陣列裡的每一個元素的大小;最後一個參數是一個指標函式,用來決定排序的方法。此函式要回傳一個整數,正數表示第一個元素應該在第二個元素後,等號表示兩者相同,負數表示第一個元素在第二個之前。

在這我們可以看到型別幾乎都是void *,主要是因為ANSI C允許任何指標型態轉型成void *,使用void *則可讓qsort支援任何型態的排序。

以下用小程式來說明,對一個整數陣列做由小到大做排序:

#include
#include
#define NUM 15

void random_array(int array[], int number);
int mycompare(const void *p1, const void *p2);

int main(void)
{
int array[NUM];
random_array(array, NUM);
qsort(array, NUM, sizeof(int), mycompare);

return 0;
}
void random_array(int array[], int number) {
int i;

for(i = 0; i < number; i++)
array[i] = rand() % 100;
}
int mycompare(const void *p1, const void *p2) {
const int *v1 = (const int *)p1;
const int *v2 = (const int *)p2;

if(*v1 > *v2)
return 1;
else if(*v1 == *v2)
return 0;
else
return -1;
}