C ++ ---错误C2664:' int scanf(const char *,...)' :无法从' int'转换参数1到#char; char *'

时间:2015-02-27 04:48:04

标签: c++ scanf

我是C ++的新手,我正在尝试构建这个非常简单的代码,但我不明白为什么会出现这个错误:

Error   1   error C2664: 'int scanf(const char *,...)' : cannot convert argument 1 from 'int' to 'const char *'

以下是代码:

// lab.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h> 

int main(int argc, char* argv[])
{
    int row = 0;
    printf("Please enter the number of rows: ");
    scanf('%d', &row);
    printf("here is why you have entered %d", row);
    return 0;
}

2 个答案:

答案 0 :(得分:6)

scanf('%d', &row);更改为

scanf("%d", &row);

'%d'是一个多字符文字,类型为int

另一方面,

"%d"是一个字符串文字,与const char *第一个参数所期望的scanf兼容。

如果你传递单引号%d,编译器会尝试从int(类型'%d')到const char *进行隐式转换(正如scanf所预期的那样)和将失败,因为没有这样的转换。

答案 1 :(得分:1)

希望你现在能理解你的错误。你用C语言而不是用C ++完成了这段代码。你需要包含标题iostream ......

#include<iostream>
using namespace std;

    int main()
    {
        int row = 0;
        cout<<"Please enter the number of rows: ";
        cin>>row;
        cout<<"entered value"<<row;

    }

希望这会有所帮助..!