2016-08-16 3 views
-1
#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; 
} 

Всякий раз, когда я пытаюсь передать два параметра в функции поиска ,не может преобразовать 'char (*) [30]' в 'char *' для аргумента '1' to 'int search (char *, char *)'

Эта ошибка возникает, пожалуйста, помогите мне настроить эту ошибку.

program Указывает на эту деталь, вызывающую ошибку: печать (поиск (имя, дампчар));

говорит [Error] не может преобразовать 'символ () [30]' до 'полукокса' для аргумента '1' на 'Int поиска (символ *, символ *)'

Пожалуйста, кто поможет !! !

+0

В любом случае функция недействительна и не имеет смысла. :) –

+0

Ваши функции поиска делают 'while (* text2 = * text1)', который копирует символы из text1 в text2, возможно, вы имели в виду использование == там. – nos

+0

Доверяйте ошибке: 'can not convert 'char() [30]' to 'char' для аргумента '1' to 'int search (char *, char *)''. За последние 20 лет в сообщения об ошибках компилятора было много усилий, чтобы дать краткое описание того, в чем проблема. Сначала они выглядят загадочными, но если вы просто * замедляете * и * думаете * о том, что компилятор пытается вам сказать, 99 раз из 100, он говорит вам, в чем именно проблема. –

ответ

0

Прототип декларации

int search(char *text1, char *text2); 

неправильно и не соответствует определению функции.

Используйте правильный:

int search(char (*text1)[30], char *text2); 

Также отметим, что scanf("%s", &dumpchar); вызывает неопределенное поведение, передавая указатель на объект, имеющий неправильный тип для scanf(). Используйте scanf("%s", dumpchar); так же, как в предыдущей строке. scanf("%29s", dumpchar); лучше, потому что максимальная длина используется для предотвращения переполнения буфера.

+0

Спасибо MIKE !!!!! Это очень помогло мне :)) – Giantrain

0

Переменная name представляет собой массив массивов char, т. Е. Это массив строк. Функция search не принимает массив строк в качестве первого аргумента, только одну строку (указатель на char).

По крайней мере, так вы объявилиsearch функция. Вы также получите сообщение об ошибке, поскольку определение функции не соответствует объявлению.

Чтобы устранить проблему, сделайте заявление соответствующим определению.

+0

Спасибо Joachim, я пропустил этот момент :( – Giantrain

Смежные вопросы