鱼C论坛

 找回密码
 立即注册
查看: 1555|回复: 6

[已解决]如何给unsigned char *赋值

[复制链接]
发表于 2020-4-7 10:36:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言小白请教,想要给函数中的unsigned char *参数赋值,照着网上的写了怎么都报错,要怎么改main函数里的赋值代码?

报错是:[Error] invalid conversion from 'unsigned char' to 'unsigned char*' [-fpermissive]

  1. #include <stdio.h>

  2. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength);

  3. main()
  4. {

  5.         int seedlength=2;
  6.         unsigned char *seed;
  7.         unsigned char a[2];
  8.         a[0] = 0;
  9.         a[1]=1;
  10.         seed=&a[0];
  11.         unsigned char *key;
  12.         unsigned char b[4];
  13.         key=&b[0];
  14.         int keylength=0;
  15.         seedToKey(*seed,seedlength,*key,keylength);
  16. }
  17. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
  18. {
  19.         keylength = seedlength*2;
  20.         printf("%3.0f",keylength);
  21.         int i=0;
  22.         for(i=0;i!=seedlength*2;i++)
  23.     {
  24.         if(i>=seedlength)
  25.             key[i] = seed[i-seedlength];
  26.         else
  27.             key[i] = seed[i];     
  28.     }
  29. }
复制代码


最佳答案
2020-4-7 10:55:29
你这不是给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
  1. #include <stdio.h>

  2. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength);

  3. main()
  4. {

  5.         int seedlength=2;
  6.         unsigned char *seed;
  7.         unsigned char a[2];
  8.         a[0] = 0;
  9.         a[1]=1;
  10.         seed=&a[0];
  11.         unsigned char *key;
  12.         unsigned char b[4];
  13.         key=&b[0];
  14.         int keylength=0;
  15.         seedToKey(seed,seedlength,key,keylength);
  16. }
  17. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
  18. {
  19.         keylength = seedlength*2;
  20.         printf("%u",keylength);
  21.         int i=0;
  22.         for(i=0;i!=seedlength*2;i++)
  23.     {
  24.         if(i>=seedlength)
  25.             key[i] = seed[i-seedlength];
  26.         else
  27.             key[i] = seed[i];     
  28.     }
  29. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-7 10:39:50 | 显示全部楼层
https://www.baidu.com/s?ie=utf-8 ... 9unsigned%20char%20*%20%E8%B5%8B%E5%80%BC&rsv_t=ad37DNG8Z0ZnAib3EfPvWjRsnc7FGRW5oqRyqDetsVi818ofAHID60NIJTCrMnuNKKUKUWkvKln1&rsv_enter=1&rsv_dl=tb&rsv_sug3=22&rsv_sug1=5&rsv_sug7=101&rsv_sug2=0&inputT=7059&rsv_sug4=7231
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 10:55:22 | 显示全部楼层
qiuyouzhi 发表于 2020-4-7 10:39
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=62095104_26_oem_dg&wd=%E5%A6%82%E4%BD%95% ...

跳转到了百度首页,大佬在教育我么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 10:55:29 | 显示全部楼层    本楼为最佳答案   
你这不是给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
  1. #include <stdio.h>

  2. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength);

  3. main()
  4. {

  5.         int seedlength=2;
  6.         unsigned char *seed;
  7.         unsigned char a[2];
  8.         a[0] = 0;
  9.         a[1]=1;
  10.         seed=&a[0];
  11.         unsigned char *key;
  12.         unsigned char b[4];
  13.         key=&b[0];
  14.         int keylength=0;
  15.         seedToKey(seed,seedlength,key,keylength);
  16. }
  17. void seedToKey(unsigned char *seed,int seedlength,unsigned char *key, unsigned int keylength)
  18. {
  19.         keylength = seedlength*2;
  20.         printf("%u",keylength);
  21.         int i=0;
  22.         for(i=0;i!=seedlength*2;i++)
  23.     {
  24.         if(i>=seedlength)
  25.             key[i] = seed[i-seedlength];
  26.         else
  27.             key[i] = seed[i];     
  28.     }
  29. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 10:56:16 | 显示全部楼层
FC的注册很坑 发表于 2020-4-7 10:55
跳转到了百度首页,大佬在教育我么

不是,不要光点击蓝色的部分
把所有的字符放进地址栏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 10:58:04 | 显示全部楼层
qiuyouzhi 发表于 2020-4-7 10:56
不是,不要光点击蓝色的部分
把所有的字符放进地址栏

2个都试了,都是跳转到百度首页
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 10:58:51 | 显示全部楼层
FC的注册很坑 发表于 2020-4-7 10:58
2个都试了,都是跳转到百度首页

额,好吧
那你看看4楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-8 16:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表