2011年2月25日 星期五

使用IAR的strchr函數注意事項

最近使用IAR的strchr要搜尋字串字,某個字元出現的位置,但是明明該字元有存在,卻是搜尋不到,後來用一個for loop去一個一個搜尋終於可以了。上網找了一下strchr的implention,發現有幾種版本:

standard C:


char *strchr(const char *s, int c)
{
    while (*s != (char)c)
        if (!*s++)
            return 0;
    return (char *)s;
}


public-domain:


char *(strchr)(const char *s, int c)
 {
     /* Scan s for the character.  When this loop is finished,
        s will either point to the end of the string or the
        character we were looking for.  */
     while (*s != '\0' && *s != (char)c)
         s++;
     return ( (*s == c) ? (char *) s : NULL );
 }

我想IAR應該是使用public-domain的,所以一旦s裡面有\0,就立即跳出來了!
因此使用strchr、strrchr這一類函數時,要留意傳入的資料中,是否含有0x00,也就是null。如果傳入的資料含有0x00,搜尋出來的結果可能有錯。

2011年2月22日 星期二

日文素食點餐

 您好
 こんにちは
 有純素的精進素食料理嗎?
 精進料理はありますか。
 我們是素食主義者、不吃任何的肉類、魚類、蛋.
 私たちは菜食主義者ですので、肉も魚も卵も全て食べられません。
 醬油要用純大豆釀製的.不能含有鰹魚或柴魚.
 醤油は鰹節やダシ等の入っていない大豆のみで出来てる醤油を使ってもらえますか
 其他的食材都可以使用.
 ほかの食材は全てつかえます。
 像蔬菜類.香菇.豆腐.都可以.
 野菜、椎茸、豆腐なども大丈夫です。
 請問可以幫我們準備這樣的料理嗎
 すみませんが、私たちにこのような料理を準備していただけますか?
 如果真的無法準備.
 もし用意できないでしたら
 可以麻煩你們幫我們準備白飯嗎??
 白いご飯だけを用意していただけますか
 真是麻煩你們了
 ご迷惑をおかけして申し訳ありません
 非常感謝
 誠にありがとうごさいます