#include <stdio.h>
char name[100][30];
char author[100][30];
char publisher[100][30];
int in_out[100];
int i=0;
int dumpnumber;
void add_book();
int search_book();
void printing(int id_print);
int search(char *text1, char *text2);
int search_book(){
int select_search;
char dumpchar[30];
printf("1. Title to search : ");
printf("2. Author to search : ");
printf("3. Name to search : ");
printf("Now What do you want ? : ");
scanf("%d", &select_search);
if(select_search==1){
printf("Enter Title to search : ");
scanf("%s", dumpchar);
//Search Engine Making
//char dumpchar
**printing(search(name,dumpchar));**
}else if(select_search==2){
printf("Enter Author to search : ");
scanf("%s", &dumpchar);
printing(search(author,dumpchar));
}else if(select_search==3){
printf("Enter Publisher to search : ");
scanf("%s", &dumpchar);
printing(search(publisher,dumpchar));
}else{
break;
}
return 1;
printf("Succeed Saved in Directory %d \n",i);
}
int search(char (*text1)[30], char *text2)
{
int search_i=0;
int search_j=0;
while(*text1){
if(*text2==*text1){
while(*text2=*text1){
text2++;
text1++;
search_j++;
if(*text2==NULL){
return search_i;
}
}
text2=text2-search_j;
text1=text1-search_j;
}
text1++;
search_i++;
}
return -1;
}
每当我尝试在搜索函数中传递两个参数时,
出现这个错误,请帮我调整这个错误。
program 指示此部分导致错误:printing(search(name,dumpchar));
说[错误]无法将参数“1”的“char ()[30]”转换为“char”到“int search(char*, char*)”
请有人帮忙!!!
最佳答案
原型(prototype)声明
int search(char *text1, char *text2);
错误,与函数定义不匹配。
使用正确的一个:
int search(char (*text1)[30], char *text2);
另请注意,scanf("%s", &dumpchar);
通过将指向类型错误的对象的指针传递给 scanf() 来调用未定义的行为
.使用 scanf("%s", dumpchar);
就像您在上一行中所做的那样。 scanf("%29s", dumpchar);
更好,因为指定了最大长度以避免缓冲区溢出。
关于无法将参数 'char (*)[30]' 转换为 'char*' 到 '1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38975325/