首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

变量类型有关问题

2012-03-07 
变量类型问题~最近玩crackme,些了一个注册机,出现了一些问题,请给位达人指点下啊~~!#include stdio.h#in

变量类型问题~
最近玩crackme,些了一个注册机,出现了一些问题,请给位达人指点下啊~~!

#include <stdio.h>
#include <string.h>

void main()
{
int tmp,length;
unsigned i;
char name[128]={0};
char regcode[128]={0};

printf("Input Your Name Plz:");
scanf("%s",&name);

length=strlen(name);
tmp=length+0x7d3;

sprintf(regcode,"tsrh-%d-",tmp);

length=strlen(regcode);

for(i=0;i<strlen(name);i++)
{
tmp=name[i]+0x0c;
tmp=tmp-0x11+tmp-length;
tmp=tmp^(name[i]+0x0c);
 
sprintf(regcode[i],"%X",tmp); //这里将计算结果的16进制输出到regcode里面,但是报错。
}
 
 
for(i=0;i<0x10;i++)
  {
  tmp=name[i]+1;
  tmp=tmp^regcode[i+11];
   
  while(tmp<0x41) tmp+=0x08;
  while(tmp>0x5a) tmp-=0x03;
   
  sprintf(regcode[i+9],"%X",tmp); //说是参数类型不匹配,郁闷ing,真么解决?
  }
   
printf("Your Regcode is:%s",regcode);
}

VC下报错提示:

Compiling...
a.c
D:\vc\a.c(28) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'char '
  //还有这一句报错是什么意思?
D:\vc\a.c(28) : warning C4024: 'sprintf' : different types for formal and actual parameter 1
D:\vc\a.c(40) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'char '
D:\vc\a.c(40) : warning C4024: 'sprintf' : different types for formal and actual parameter 1

a.obj - 0 error(s), 0 warning(s)


[解决办法]
#include <stdio.h>
int sprintf(char *buf,const char *format,...);

函数sprintf()是C标准库里面的I/O函数。
sprintf()与printf()基本相同,但输出写到字符数组buf中而不是stdout中。由buf指向的数组以null 结尾。
例子:
char str[80];
sprintf(str,"%s%d%c","one",2,'3');

我 google 的,o(∩_∩)o...哈哈

[解决办法]
int sprintf( char *buffer, const char *format [, argument] ... );

char * buffer !!!

sprintf(&regcode[i],"%X",tmp); // sprintf(regcode[i],"%X",tmp);
[解决办法]
regcode[i]
regcode[i+9]

都是char 这里的sprintf函数需要的是char * 而不是char。所以才会报错的。
你改成regcode就可以了
[解决办法]
sprintf()的第一个参数是一个地址。
 sprintf(regcode[i],"%X",tmp); //这里将计算结果的16进制输出到regcode里面,但是报错。 
改为: sprintf(regcode+i,"%X",tmp); 

 sprintf(regcode[i+9],"%X",tmp); //说是参数类型不匹配,郁闷ing,真么解决? 
改为: sprintf(regcode+i+9,"%X",tmp);

热点排行
Bad Request.