簡體   English   中英

檢查兩個字符數組是否相等C

[英]Checking two character arrays for equality C

我正在嘗試編寫一個程序,以檢查輸入到程序中的單詞是否與預定義關鍵字之一匹配。 輸入將來自文本文件,文本文件中將只有一個單詞。 到目前為止,我剛剛在文本文件中使用了“青蛙”一詞,這意味着程序應該清楚地打印“未找到匹配項”,但實際上它會打印“已找到匹配項”,即使文本文件中的單詞也打印出“已找到匹配項”是一串隨機字母。 這是我的代碼,對您來說有什么特別的嗎? 謝謝

#define NUM 4
#define SIZE 12

int isAlpha(char);

//Returns 1 if it is an Alphabetical character, 0 if it is not
int isAlpha(char c) {
  return (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z');
}

int main() {
  char message[141];
  int charCount = 0, c = 0, matchCheck = 0;

  char keywords[NUM][SIZE] = {
    "crackerjack",
    "Hey",
    "dog",
    "feet"
  };

  //Removes non alphabetical characters
  while((c = getchar()) != EOF && charCount <= 140) {
    if(isAlpha(c)){
      message[charCount] = c;
      charCount++;
    }
  }

  //checks if message matches keyword
  for (int i = 0; i < NUM; i++) {
    for (int j = 0; j < SIZE; j++) {

      //Check if current two characters match
      if (message[j] == keywords[i][j]) {
        //Check if the two matched characters are the null terminator character
      if (message[j] == '\0' && keywords[i][j] == '\0') {
          matchCheck = 1;
          break;
      }
    }  
  } 
}


  //prints "Match Found!" if there was a match
  if (matchCheck == 1)
    printf("Match Found!\n");
  else 
    printf("No Match Found\n");

}

我已經很長時間沒有用C編程了,而我現在沒有C編譯器。 但是,我認為邏輯可能存在問題。 您需要單獨檢查每個單詞。 對於您的最后一部分,我會做類似以下的事情...

matchAnyWord = 0

for (int i = 0; i < NUM; i++) {
    matchCheck = 1; 

    for (int j = 0; j < SIZE; j++) {
        if (message[j] == '\0' && keywords[i][j] == '\0') break;
        if (message[j] == '\0' && keywords[i][j] != '\0') { matchCheck = 0; break;}
        if (message[j] != '\0' && keywords[i][j] == '\0') { matchCheck = 0; break;}
        if (message[j] != keywords[i][j] ) { matchCheck = 0; break;}
    } 

    if (matchCheck == 1) {matchAnyWord = 1; break;}
}

請注意,這里我們檢查單個單詞的匹配情況,並引入一個新變量matchAnyWord ,這實際上是您想要的。 我可能在語法上有錯誤,但是我認為那里的邏輯應該差不多。

干杯!

此外,不確定為什么縮進不能正確顯示在我的瀏覽器上...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM