0
我認爲它可能是某種類型的內存泄漏,當試圖讀取.txt文件。它只是停止響應和崩潰,我一般對編程相當陌生。當試圖在eclipse上運行程序時,它崩潰
這是總的不完整的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAXNUMWORDS 100
#define MAXWORDLENGTH 60
void gallows(int i) {
switch (i) {
case 0:
printf("Amount of wrong letters: %d\n\n", i);
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("____________\n\n");
break;
case 1:
printf("Amount of wrong letters: %d\n\n", i);
printf("\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 2:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 3:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 4:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" |\n");
printf(" |\n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 5:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" | |\n");
printf(" | |\n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 6:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" | \\|\n");
printf(" | | \n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 7:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" | \\|/\n");
printf(" | | \n");
printf(" |\n");
printf("__|_________\n\n");
break;
case 8:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" | \\|/\n");
printf(" | | \n");
printf(" | /\n");
printf("__|_________\n\n");
break;
case 9:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | O \n");
printf(" | \\|/\n");
printf(" | | \n");
printf(" | /\\\n");
printf("__|_________\n\n");
break;
case 10:
printf("Amount of wrong letters: %d\n\n", i);
printf(" _______\n");
printf(" |/ | \n");
printf(" | X \n");
printf(" | \\|/\n");
printf(" | | \n");
printf(" | /\\\n");
printf("__|_________\n\n");
break;
}
} INT主(){
printf("Welcome to Hangman!\n");
printf(" /-----| \n");
printf(" | \n");
printf(" | \n");
printf(" | \n");
printf(" | \n");
printf(" __|______\n");
srand(time(NULL));
char WordList[MAXNUMWORDS][MAXWORDLENGTH];
int WordsReadIn = 0;
FILE *pToFile = fopen("dictionary.txt", "r");
if (pToFile == NULL) {
printf("Failed To Open File\n");
return 0;
}
char input[100];
while (fgets(input, 100, pToFile)) {
sscanf(input, "%s", WordList[WordsReadIn]);
}
printf("Total Words Read In:%d\n", WordsReadIn);
fclose(pToFile);
// index for random word
int randomIndex = rand() % WordsReadIn;
int numLives = 5;
int numCorrect = 0;
int oldCorrect = 0;
int lengthOfWord = strlen(WordList[randomIndex]);
// 0 1 2 3 4 5
// p u r p l e
// letterGuessed[8] = { 0,0,0,0,0,0,0,0 };
int letterGuessed[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
int quit = 0;
int loopIndex = 0;
int reguessed = 0; // EDIT
char guess[16];
char letterEntered;
// game loop
while (numCorrect < lengthOfWord) {
printf("\n\nNew Turn....\nHangman Word:");
for (loopIndex = 0; loopIndex < lengthOfWord; loopIndex++) {
if (letterGuessed[loopIndex] == 1) {
printf("%c", WordList[randomIndex] [loopIndex]);
} else {
printf("-");
}
}
printf("\n");
printf("Number Correct So Far:%d\n", numCorrect);
printf("Enter a guess letter:");
fgets(guess, 16, stdin);
if (strncmp(guess, "quit", 4) == 0) {
quit = 1;
break;
}
letterEntered = guess[0];
reguessed = 0;
printf("letterEntered:%c\n", letterEntered);
oldCorrect = numCorrect;
for (loopIndex = 0; loopIndex < lengthOfWord; loopIndex++) {
if (letterGuessed[loopIndex] == 1) {
if (WordList[randomIndex][loopIndex] == letterEntered) {
reguessed = 1;
break;
}
continue;
}
if (letterEntered == WordList[randomIndex][loopIndex]) {
letterGuessed[loopIndex] = 1;
numCorrect++;
}
}
if (oldCorrect == numCorrect && reguessed == 0) {
numLives--;
printf("Sorry, wrong guess\n");
if (numLives == 0) {
break;
}
} else if (reguessed == 1) {
printf("Already Guessed!!\n");
} else {
printf("Correct guess :)\n");
}
} // while loop
if (quit == 1) {
printf("\nthe user quit early\n");
} else if (numLives == 0) {
printf("\nSorry you lose, the word was: %s\n",
WordList[randomIndex]);
} else {
printf("\nYOU WIN!!! :)\n");
}
return 0;
}
我應該怎樣做,以便它讀入.txt文件?並且在它後面有一個新的「WordsReadIn ++」,因此它有一個值? – Gaddi
謝謝,它現在讀入!現在要弄清楚爲什麼有一個無限循環 – Gaddi