c - 寻找单词中的字母模式

标签 c fopen c99 printf strstr

有什么方法可以搜索“tro_ _ _e”,其中下划线代表缺失的字母?

我有一个文本文件,每行有 7 个字母的单词。例如

trouble
control
reached
further
helping
shatter
biggest

我正在尝试将每个单词与字符串进行比较

char check[10]="tro\0\0\0e"

目前我正在阅读每一行并使用以下内容进行比较:

if(strstr(pword,check)!=NULL)
{
    fprintf(wfile,"%s\n",pword);
    }
}

fclose(file);

fclose(wfile);

我意识到我当前在 wfile 中的输出:

control
trouble

是因为“tro”和“e”之间有三个\0,所以比较只是在单词中查找“tro”。

有什么方法可以搜索“tro_ _ _e”,其中下划线代表缺失的字母?

这是一个刽子手游戏,因此文件中的单词并不总是相同,并不总是 7 个字母长,并且模式并不总是“tro_ _ _e”,因为该模式代表玩家已经猜到的字母。本例的答案:“麻烦”

例如,如果玩家猜出了“r”、“u”和“l”。我会有一个字面上的字符串。

char check[10]="\0r\0u\0l\0\0\0\0\0" 因此我想要的搜索将是针对具有模式“_r_u_l”的任何单词”

最佳答案

如果您真正愿意接受 C# 解决方案,正如您的标签所建议的那样:

string pword = "control\r\ntrouble\r\nreached\r\nfurther\r\nhelping\r\nshatter\r\nbiggest";
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("tro...e");
System.Text.RegularExpressions.MatchCollection mc = re.Matches(pword);
foreach (System.Text.RegularExpressions.Match m in mc)
{
   Console.WriteLine(m.Value);
}

关于c - 寻找单词中的字母模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095414/

相关文章:

c++ - fopen/fclose 性能

c - 文件无法使用 fopen 打开

为任何类型的数组创建 min() 宏

c++ - 反对使用 size_t 的理由是什么?

c++ - 递归函数中的 GOTO 指令

c++ - 基于文件的位图 API

c - 打开一个文件,并在 C 中打印出带有特定数字的一行?

c - 将堆分配指针转换为指向 VLA 的指针是否安全?

c - 在 Code::Blocks 中开发 C?

c - 理解 for 循环的增强语法