编写 C 程序使用 For 循环和 While 循环查找字符串中单词的首次出现,并附有示例。
C 语言查找字符串中单词首次出现位置的程序 示例 1
此程序允许用户输入任何字符串或字符数组,并将其存储在 str 变量中。接下来,它将要求用户输入要搜索的任何单词。然后,编译器将搜索整个字符串,并找到单词的首次出现。
/* C Program to Find First Occurrence of a Word in a String */
#include <stdio.h>
int main()
{
char str[100], word[100];
int i, j, Flag;
printf("\n Please Enter any String : ");
gets(str);
printf("\n Please Enter the Word that you want to Search for : ");
gets(word);
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] == word[0])
{
Flag = 1;
for(j = 0; word[j] != '\0'; j++)
{
if(str[i + j] != word[j])
{
Flag = 0;
break;
}
}
}
if(Flag == 1)
{
break;
}
}
if(Flag == 0)
{
printf("\n Sorry!! We haven't found the Word '%s' ", word);
}
else
{
printf("\n We found '%s' at position %d ", word, i + 1);
}
return 0;
}

str = learn c at tutorial gateway
word = tutorial
第一个 For 循环 – 第一次迭代:for(i = 0; str[i] != ‘\0’; i++)
条件为 True,因为 str[0] = l
if(str[i] == word[0]) => if(l == t ) – 条件为 False
请执行相同的操作,直到 i 到达 11,因为在索引位置 11 处,str[i] 等于 word[0]
第一个 For 循环 – 第 12 次迭代:for(i = 11; str[11] != ‘\0’; i++)
条件为 True,因为 str[11] = t
if(str[i] == word[0]) => if(t == t ) – 条件为 True
Flag = 1
接下来,C 编程编译器将进入第二个 For 循环。这里,第二个 For 循环用于检查单词中的每个字符是否等于 str 中的单词。
第二个 For 循环 – 第一次迭代:for(j = 0; word[j] != ‘\0’; j++)
条件为 True,因为 word[0] = t
if(str[i + j] != word[j]) => if(str[11 + 0] != word[0])
=>if(t != t) – 条件为 False
对剩余的迭代执行相同的操作,直到您完成 str[i + j] 与 word[j] 的比较。如您所知,条件 if(str[i + j] != word[j]) 始终返回 false。如果任何单个字符不匹配,则 if(str[i + j] != word[j]) 将变为 true,Flag 将变为 0。
一旦 j 值变为 8,第二个 for 循环中的条件将失败。接下来,编译器将进入 If 语句
if(Flag == 0) – 条件为 False。因此,编译器将打印 Else 块内的语句。请记住,i 值是索引位置,i + 1 是实际位置。
C 语言查找字符串中单词首次出现位置的程序 示例 2
在这个首次出现单词的 C 程序中,我们只是用 While 循环替换了 For 循环。我建议您参考 While 循环 文章来理解逻辑。
/* C Program to Find First Occurrence of a Word in a String */
#include <stdio.h>
int main()
{
char str[100], word[100];
int i, j, Flag;
printf("\n Please Enter any String : ");
gets(str);
printf("\n Please Enter the Word that you want to Search for : ");
gets(word);
i = 0;
while(str[i] != '\0')
{
if(str[i] == word[0])
{
Flag = 1;
j = 0;
while(word[j] != '\0')
{
if(str[i + j] != word[j])
{
Flag = 0;
break;
}
j++;
}
}
if(Flag == 1)
{
break;
}
i++;
}
if(Flag == 0)
{
printf("\n Sorry!! We haven't found the Word '%s' ", word);
}
else
{
printf("\n We found '%s' at position %d ", word, i + 1);
}
return 0;
}
Please Enter any String : c programming tutorial at tutorial gateway website
Please Enter the Word that you want to Search for : tutorial
We found 'tutorial' at position 15