C 语言查找字符串中单词首次出现位置的程序

编写 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;
}
C Program to Find First Occurrence of a Word in a String 1

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