2015-12-02 57 views
0

我一直在這段代碼上工作太久,我無法弄清楚它! 此代碼的目的是創建一個單詞搜索遊戲。但是,我將小部件的功能分開,以使它們變得更易於管理。在下面的代碼中,程序應該輸出應該顯示從A到J的字母的單詞搜索的第一行,以及顯示從0到9的數字的左列。該程序也意味着在RANDOM位置輸出4個隨機隱藏詞(用戶應該在遊戲中找到)。我試圖通過檢查數組中的特定位置是否等於NULL來完成此操作,如果它是NULL,則應在該位置輸出隨機單詞。但是,由於某種原因沒有任何東西在屏幕上輸出。C中的循環錯誤

這是我到目前爲止的代碼:

char getRandomCharacter(); 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <string.h> 

char getRandomCharacter(){ 
    int r = (rand() % 26) + 65; 
    return (char)r; 
} 

int main(void){ 

    int randomNum; 
    int rand2; 
    char* wordSearch[10][10]={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
          NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; 
    const char *takenWords[4]; 
    const char *words[20]={"DOG", "CAT", "ELEPHANT", "CROCODILE", "HIPPOPOTAMUS", "TORTOISE", "TIGER", "FISH", "SEAGULL", "SEAL", "MONKEY", "KANGAROO", "ZEBRA", "GIRAFFE", "RABBIT", "HORSE", "PENGUIN", "BEAR", "SQUIRREL", "HAMSTER"}; 


    printf("\n\tA\t\tB\t\tC\t\tD\t\tE\t\tF\t\tG\t\tH\t\tI\t\tJ\n"); 
    for(int i=1; i<11; i++){ 
     printf("\n%d\t", i-1); 

      for(int i=0; i<4; i++){ 
       do{ 
       srand(time(NULL)); 
       rand2=(rand()%10); 
       if(&wordSearch[rand2]==NULL){ 
        int flag=0; 
        do{ 
         randomNum = (rand()%20); 
         takenWords[i]=words[randomNum]; 
         flag=0; 
         for(int j=0;j<i;j++){ 
          if(strcmp(words[randomNum],takenWords[j])==0)flag=1; 
         } 
        }while(flag); 
        printf("%s\n", words[randomNum]); 
       } 
       }while(&wordSearch[rand2]==NULL); 
      } 
     printf("\n\n"); 
    } 
     /*for(int j=0; j<10; j++){ 
      char c=getRandomCharacter(); 
      wordSearch[i][j]=c; 
      printf("%c\t\t", *(&(wordSearch[i][j]))); 
     }*/ 

     getchar(); 
     return 0; 
} 
+0

當你爲(int i = 0; i <4; i ++)定義第二個'i'循環' )外環中的'i'仍然在範圍內 –

回答

2

此:

while(&wordSearch[rand2]==NULL); 

一定是錯誤的。數組中元素的地址永遠不會是NULL。你可能意思是沒有&,但這也沒有意義,因爲wordSearch是一個二維數組...

+0

我按照你所說的固定它。但是這導致了一個無限循環,它只能一遍又一遍地顯示相同的單詞 – Alisinna