如何使程序读取文本文件,并将文本文件中的单词与我在数组中定义的单词进行比较,然后输出消息。我认为主要问题是for循环,因为我不确定它是否正确迭代。这是我的代码:
define MAX_SIZE 1000
int main()
{
FILE * yourfile;
char as_array[MAX_SIZE];
char name[20];
const char * keywords[]={"if", "else", "return", "switch", "case", "default", "for", "do", "while",
"break", "continue", "struct", "typedef", "union", "enum", "sizeof", "int", "float", "double",
"void",
"extern",
"signed", "unsigned", "long", "short", "static", "const", "goto", "auto", "register", "volatile"};
printf("Please write the file you want to open: \n ");
scanf("%s", name);
int number_of_keywords = sizeof(keywords)/sizeof(keywords[0]);
//fopen opens the file; exits with error if the file cannot be opened
if ((yourfile = fopen(name, "r"))== NULL){
printf("Could not open file: %s", name);
exit(1);
}
else printf("Your file has been successfully opened!\n");
while(!feof(yourfile)){
fgets(as_array, MAX_SIZE, yourfile);
printf("%s\n", as_array);
char x = gets(as_array);
for(int i = 0 ; i<number_of_keywords; ++i){
if(keywords[i]== x){
printf("I found word %s\n", keywords[i]);
}
}
return 0;
}
}
答案 0 :(得分:0)
假设您的文本文件是test.txt并且包含
if
else
return
switch
case
然后这段代码起作用了,抱歉,我重新设置了一下,然后将0 shd设置为\ o,并且我对文件名进行了硬编码,但是您会发现它的乐趣。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 1000
int main()
{
FILE * yourfile;
int i;
int number_of_keywords;
char string[200];
char as_array[MAX_SIZE];
char name[20]="test.txt";
const char * keywords[]={"if", "else", "return", "switch", "case", "default", "for", "do", "while",
"break", "continue", "struct", "typedef", "union", "enum", "sizeof", "int", "float", "double",
"void",
"extern",
"signed", "unsigned", "long", "short", "static", "const", "goto", "auto", "register", "volatile"};
// printf("Please type file name to open: \n ");
// scanf("%s", name);
number_of_keywords = sizeof(keywords)/sizeof(keywords[0]);
//fopen opens the file; exits with error if the file cannot be opened
if ((yourfile = fopen(name, "r"))== NULL){
printf("Could not open file: %s", name);
exit(1);
}
else printf("Your file has been successfully opened!\n");
while( fgets( string, 200 , yourfile))
{
// problem : fgets grabs \n
// remove it
string[strlen(string)-1]=0;
printf( string);
getchar();
for( i=0 ; i<number_of_keywords; i++)
{
if(!strcmp(keywords[i], string))
printf("I found word %s\n", keywords[i]);
}
}
fclose(yourfile);
return 0;
}