0

ライブラリ関数にテキストを渡すプログラムを書いています。この関数は、textパラメーターがunsignedchar *型であることを想定しています。

では、どうすればその関数に文字列を適切に渡すことができますか?既存のchar *をunsignedchar *に変換できず、 strncpyを介してunsignedchar *変数に新しい値を書き込むこともできませんでした。

編集:ここに小さな例があります:

それは私が呼び出す必要がある関数です:

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

これは私のコードにあるものです:

count(index,?argv[2]?, length, numocc);
4

1 に答える 1

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*
于 2013-03-18T18:24:04.243 に答える