2013-03-18 33 views
0

我正在編寫一個將文本傳遞給庫函數的程序。 該函數預計文本參數的類型爲unsigned char *。使用String創建變量作爲uchar傳遞*

那麼我該如何正確地將一個字符串傳遞給該函數呢?我不能在現有的char *轉換爲無符號字符 *和寫一個新值到無符號字符 *通過函數strncpy變量也沒有工作。

編輯: 這裏是一個小例子:

這就是我需要調用的函數:

int count (void *index, uchar *pattern, uint length, uint *numocc);

這是我在我的代碼:

​​
+0

請提供一個最簡單的例子來說明您遇到的問題。 – 2013-03-18 18:19:38

回答

1

你可以用(unsigned char*)進行類型轉換。我張貼一個小例子可能是它幫助你(閱讀評論):

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
void func(unsigned char* str){ // argument should be unsigned char* 
    printf("\n In side fun: %s\n", str); 
} 
int main(){ 
    char* s = "your_name"; // s is char* 
    func((unsigned char*)s); // notice type casting 
    return 1; 
} 

和它的作品:

~$ gcc x.c -Wall 
~$ ./a.out 

In side fun: your_name 
~$ 

編輯

count(index, (uchar*)argv[2], length, numocc); 
      ^typecast (uchar*) 

uchar*可能在您的代碼中輸入typedef,如:

typedef unsigned char* uchar* 
+0

謝謝,這工作。我認爲只是演繹這個並不會真正改變內部表現,實際上它確實如此。 – 2013-03-18 18:31:51

+0

@Seppl that good .. read編輯部分also..may幫助你 – 2013-03-18 18:34:19