|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C语言小白请教,想要给函数中的unsigned char *参数赋值,照着网上的写了怎么都报错,要怎么改main函数里的赋值代码?
报错是:[Error] invalid conversion from 'unsigned char' to 'unsigned char*' [-fpermissive]
- #include <stdio.h>
- void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength);
- main()
- {
- int seedlength=2;
- unsigned char *seed;
- unsigned char a[2];
- a[0] = 0;
- a[1]=1;
- seed=&a[0];
- unsigned char *key;
- unsigned char b[4];
- key=&b[0];
- int keylength=0;
- seedToKey(*seed,seedlength,*key,keylength);
- }
- void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
- {
- keylength = seedlength*2;
- printf("%3.0f",keylength);
- int i=0;
- for(i=0;i!=seedlength*2;i++)
- {
- if(i>=seedlength)
- key[i] = seed[i-seedlength];
- else
- key[i] = seed[i];
- }
- }
复制代码
你这不是给unsigned char*赋值的问题吧
void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
函数中第一个和第三个参数都是unsigned char* 类型,但是你在调用函数的时候,写的却不是指针,
第18行,seedToKey(*seed,seedlength,*key,keylength); *seed不是指针,而是指针指向的内容,类型其unsigned char,不加* 才是指针。
另外第23行printf和石化符号用错了,keylength是unsigned int 格式化输出应该用%u,而不是%f
- #include <stdio.h>
- void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength);
- main()
- {
- int seedlength=2;
- unsigned char *seed;
- unsigned char a[2];
- a[0] = 0;
- a[1]=1;
- seed=&a[0];
- unsigned char *key;
- unsigned char b[4];
- key=&b[0];
- int keylength=0;
- seedToKey(seed,seedlength,key,keylength);
- }
- void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
- {
- keylength = seedlength*2;
- printf("%u",keylength);
- int i=0;
- for(i=0;i!=seedlength*2;i++)
- {
- if(i>=seedlength)
- key[i] = seed[i-seedlength];
- else
- key[i] = seed[i];
- }
- }
复制代码
|
|