c++ 错误:从字符到常量字符的转换无效 *

ruarlubt  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(180)

我从第一天起就面临这个问题。
实际上,我正在阅读的书中有这样编写的程序,但是当我在Eclipse IDE上实际检查时,它不能正常工作,总是显示以下错误:
从字符到常量字符的转换无效 *
虽然我知道问题是什么,但我不知道如何解决这个问题,而且我在每个包含字符串操作的程序中都面临这个问题。
错误出现在以下if语句中:
if(!strcmp(str, *ptr[i]))

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    const char *ptr[10] = { "books", "television", "computer", "sports" };
    int i = 0;
    char str[25];
    cout << "\nEnter your favorite leisure pursuit here :" << "\n";
    cin >> str;
    for (i = 0; i < 4; i++)
    {
        if (!strcmp(str, *ptr[i]))
        {
            cout << "\n your favorite pursuit is available here " << endl;
            break;
        }
    }
    if (i == 4)
    {
        cout << "\n\nYour favorite leisure is not available here" << endl;
    }
    return 0;
}
j2qf4p5b

j2qf4p5b1#

strcmp()比较两个以null结尾的const char*字符串。但是,您试图将以null结尾的char[]字符串与单个char进行比较,因此出现错误。这是因为您正在取消引用第二个const char*字符串以访问其第一个char元素。
ptr是一个const char*指针数组,因此在访问ptr[i]时需要删除额外的*解引用操作符,以便比较整个字符串,而不仅仅是字符串中的单个字符,例如:

if (strcmp(str, ptr[i]) == 0)

相关问题