初始化"int strcmpi(const char*, const char*)"错误的参数 1

initializing argument 1 of `int strcmpi(const char*, const char*)' error

本文关键字:const char 错误 参数 int 初始化 strcmpi      更新时间:2023-10-16
char BOOK::retname()
{
    return name;
}
void BOOK::searchbook()
{
    clrscr();
    int flag=0;
    char name2[30];
    FILE *fp;
    cout<<"Enter Book Name: ";
    cin.get();
    gets(name2);
    char name1=retname();
    fp = fopen("Records.txt","rb");
    while(fread(&BOOK,sizeof(BOOK),1,fp)==1){
        if(strcmpi(name1,name2)==0)
            {
                flag=1;
                cout<<"This book is available: ";
    }       }
}  

我在这里得到一些错误,如从char*到char的无效转换。
我对文件处理问题不熟悉,所以调试超出了我的思考范围。
请不要因为我使用gets()而屠杀我
谢谢你
PS: char name是类BOOk
的私有成员我认为我不能将字符串name等同于第14行中的普通char name1,但我不知道如何解决这个问题。
编辑我现在得到错误在第16行
"期望的主表达式在',' token"
编辑我得到了它的工作,无论如何感谢人们!!

查看您得到的错误行

char name1=retname();
if(strcmpi(name1,name2)==0)

strcmpi不取char in,取char * in。char不是字符数组。一个字符是一个字符,所以我认为你已经声明了一些错误的东西,如果你有一个char name变量,应该长于一个字符。

retname();函数返回字符串,但name1变量只取一个字符,因为它被声明为char。因此,声明name1变量char* name1char name1[]