初始化参数1 int strcmpi(const char *,const char *)'错误
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:字符名称是Book类的私有成员
我想我不能在line14一个普通的字符名1等同串的名字,但我不知道知道如何解决这个问题。
编辑现在我16行
得到错误“之前的预期‘’令牌主表达式”
编辑我得到它的工作,感谢反正人民!请锁定这个线程MODS初始化参数1 int strcmpi(const char *,const char *)'错误
看看错误行你得到
char name1=retname();
if(strcmpi(name1,name2)==0)
strcmpi并不需要在char
,它需要一个char *
。 char不是char数组。 char是单个字符,所以我认为如果您有一个char name
变量,并且该变量应该比一个字符长,则说明您错误地声明了某些内容。
声明拷贝到'char * name1'中。现在它的名字是char name [30]是重要的,因为书的名字不能是单个字符,现在该怎么办? – user3500780
然后名称不是char,它是一个char [30],可以用作char *。你的retname函数是错误的。如果这是C++,那么在任何情况下都应该使用std :: string。 – Taywee
我得到它的工作,谢谢 – user3500780
retname();函数返回a 字符串,但name1
变量只取一个字符,因为它声明为char
。所以,声明name1
变量char* name1
或char name1[]
。
是的!我想到最初并尝试name1 [],但不起作用! :( – user3500780
阅读完整的错误信息,看看类型使用调用'strcmp'的变量,然后学习如何使用C++标准库和它的类,而不是与旧的C混合构造你的代码。 –
另外,千万不要使用旧的C函数'gets'。它已经从C语言中删除,并且很快也会从C++规范中删除。通常,不要混合使用C++和C输入/输出结构。它们默认同步,但是很混乱。 –
'retname()'必须返回'char *',你可以通过'strcpy(name1,retname())' –