C ++类型警告

时间:2016-06-25 16:58:59

标签: c++

我有以下代码,我似乎无法确定问题是什么。

当我编译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;
}

1 个答案:

答案 0 :(得分:1)

%s格式说明符表示相应的参数(传递给fprintf函数)应该是指向char的指针。您正在传递&key_stroke,即int的地址 - 因此此警告。

在您的for (i = 8; i <= 190; i++)循环中,在127之后的下一个值将为-128,因为i被声明为char,除非您使用使其成为unsigned char的编译器设置,你?