2012年11月9日 星期五

[C語言考題-1]strcpy()實作

Question:已知strcpy函數的原型是 char* strcpy(char* strDest,const char* strSrc);
1.不使用原始函式庫,請實現strcpy函數
2.解釋為什麼要返回char*  -->其實我還是不知道為何要return? 沒return也可以run說...

以下收集幾種"寫"法,目前我的程度還沒辦法明確告訴您哪一個最"好",但都可以執行,請自行參考:

寫法一(網路上最常看到的)
char* strcpy(char* strDest,const char* strSrc)
{
 if((strDest == NULL) || (strSrc == NULL)) //[1]
  throw "Invalid Arguments"; //[2]
 char* strDestCopy = strDest; //[3]
 while((*strDest++ = *strSrc++) != '\0')//[4]
  ;
 return strDestCopy;
}
這裡要注意[4]前面的 \0,大部分轉貼的都是寫/0,會有warning並沒辦法執行。(害我try了一陣子)

寫法二(Wiki)
http://zh.wikipedia.org/wiki/Strcpy
char *strcpy(char *dest, const char *src)
{
  const char *p;
  char *q; 

  for(p = src, q = dest; *p != '\0'; p++, q++)
    *q = *p;
   
  *q = '\0';

  return dest;
}

寫法三(某部落客)
http://vijayinterviewquestions.blogspot.tw/2007/07/implement-strcpy-function.html

char *mystrcpy(char *dst, const char *src)
{
char *ptr;
ptr = dst;
while(*dst++=*src++);
return(ptr);
}
or
char *my_strcpy(char dest[], const char source[])
{
int i = 0;
while (source[i] != '\0')
{
dest[i] = source[i];
i++;
}
dest[i] = '\0';
return(dest);
}

大同小異囉~ 大家參考參考~

2012年6月26日 星期二

簽章自動輸入密碼(Auto Sing Key)

這篇是:Creating Release Keys and Signing Builds 的延伸。

 當您作到
./build/tools/releasetools/sign_target_files_apks -d vendor/<vendor_name>/security/<product_name> <product_name>-target_files.zip signed-target-files.zip
這一步後,都會詢問密碼,而且一次都是問四次,對於重複使用者或自動化來說,都是不太方便的。
我找到一個地方是在寫這段流程的Python程式,建議大家可以從這個地方來修改:
位置在 build\tools\releasetools\common.py
line:562
 result[k] = getpass.getpass("Enter password for %s key> "
                                      % (k,)).strip()
getpass 這個方法就是用來提示使用者輸入,並回傳值。
因此很簡單的,你可以將你的密碼直接指定給result[k],他就不會一直問了。
result[k]='xxxx'
當然你可以用各種方式來取得密碼,我這裡就不贅述了~
給大家參考!







2012年6月7日 星期四

Android 4.0 CTS 設備設定


還是需以官方文件為準,只是有些部份我覺得寫得不是很清楚或是過時,可以參考看看!

1.確認裝置手機或平台是user-build

2.settings-->Backup & reset-->Factorydata reset

3.平台插入一張空的sd卡(沒有空的他也會把你刪掉)

4.平台安裝APK:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk

5.settings打開Wi-Fi,並確定ap可連外

6.settings-->Security-->Screenlock-->None

7.settings-->Security-->Deviceadministrators-->Enable

8.settings-->Display-->Sleep-->30minutes或None

9.settings-->Accessibility-->EnableDelegating Accessibility Service

10.settings-->Developeroptions-->Enable USB debugging、Stay awake、Allowmock locations

11.開始測試前畫面需停留在Homescreen,並且不要有其他的task在跑,也不要任何操作。