-3

与えられた構造体の配列と比較することにより、本のタイトルと著者を取得し、利用可能かどうかにかかわらず0または1を返す関数を作成したいと思います。コンパイラは次のことを示します。

structs.c:10:28: error: expected ‘)’ before ‘title’
structs.c: In function ‘main’:
structs.c:59:21: error: expected expression before ‘bookRecord’
structs.c:60:13: error: expected expression before ‘bookRecord’
structs.c:61:9: warning: implicit declaration of function ‘requestBook’
structs.c:61:23: error: expected expression before ‘bookRecord’

コードは次のとおりです。

  #include<stdio.h>           
  #include <stdlib.h>
  #include <string.h>


 #define TRUE 1
 #define FALSE 0

 #define NUM_BOOKS 5

 int requestBook(bookRecord title[],bookRecord author[]){    /* compiler error :10*/
          int i;
          for(i=0;i<=NUMBOOKS;i++){
                  if(strcmp(stacks[i].tittle ,bookRecord.title[0]) == 0 &&                                                                              
                  strcmp(stacks[i].author     ,bookRecord.author[0]) == 0 ){

                  return 1;
                   }
           }
                   return 0;
  }

         typedef struct {
        int minute; 
        int hour;   
         } timeT;


    typedef struct {

       char title[50];  
       char author[50];     
       int year;        
       int isOut;                   
       timeT time;      
       int isBlank;         
  } bookRecord;


  /* given array of struct */

    bookRecord stacks[NUM_BOOKS]=
       {
       {"C How To Program", "Deitel", 2006, FALSE, {0,  0}, TRUE} ,
       {"The Old Capital", "Yasunari Kawabata", 1996, FALSE, { 0, 0}, TRUE},
       {"", "", 0, FALSE, {0,0}, FALSE},
       {"", "", 0, FALSE, {0,0}, FALSE},
       {"", "", 0, FALSE, {0,0}, FALSE}
       };

 int main (int argc, char*argv[]) { 
    int t;

    scanf("%s ",bookRecord.title[0]);         /* compiler error :59*/
    scanf("%s",bookRecord.author[0]);     /* compiler error :60*/

     t=requestBook(bookRecord.title[0], bookRecord.author[0]);   /* compiler error :61
     printf("%d",t);


     return 0;
 }

助けていただければ幸いです!

////////////////////////////////////////////////

最終的な解決策を見たい場合は、構造体の混乱にアクセスしてください(2)重複しています

////////////////////////////////////////////////

4

2 に答える 2

1

コードにはいくつかの問題があります。

  1. 構造体は、関数で使用した後に宣言しrequestBookます。
  2. requestBook関数内で、これまで宣言されていなかった variable を参照しますstacks
  3. requestBook関数では、型を変数として使用します bookRecord

もっとあるかもしれませんが、それが最初の読書で見つけたものでした。

編集:

その他のいくつかの問題:

  1. requestBook関数では、1回ループして多数回ループします。配列インデックスは 0 から (number_of_entries - 1) までであることを思い出してください。
  2. タイプbookRecordを変数mainとしても使用します。
  3. 誤って使用bookRecordすると、構造体または文字列が取得されず、文字列titleおよびauthor.
于 2012-08-18T16:40:59.243 に答える
0

この行に問題があります:

if(strcmp(stacks[i].tittle ,bookRecord.title[0]) == 0 &&
strcmp(stacks[i].author ,bookRecord.author[0]) == 0 )

最初の strcmp 関数で 'title' のスペルを間違えました。

于 2012-08-18T16:41:32.437 に答える