c - 在C中的txt文件中搜索单词
问题描述
如何让我的程序读取文本文件并将文本文件中的单词与我在数组中定义的单词进行比较并打印一条消息。我认为主要问题是 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;
}
}
解决方案
假设您的文本文件是 test.txt 并包含
if
else
return
switch
case
然后这段代码有效,抱歉我重新格式化了一下,0 shd be\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;
}
推荐阅读
- flutter - 在颤动中重新加载小部件
- hyperledger-fabric - 3 个组织的超级账本网络需要多少个链码
- angular - HttpTestingController.expectOne 看不到我的请求,但是在 afterEach() 方法中是打开的
- java - Spring Security:方法级安全性阻止访问角色
- python - 从python中的不同目录导入同名文件?
- postgresql - PostgreSQL:将 jsonb 转换为列
- reactjs - 尝试使用应用程序中的授权标头(反应)打开新窗口以连接我们网站上的用户
- c - 不同倍数的错误输出
- c# - C#,如何在 mvvmlight 样式中使用 Reflection.Emit 属性 getter setter 动态创建
- c - 生成前 50 个正整数,可被 7 整除