📖 Scenario: You are building a simple text search tool. It helps find if a small word or pattern exists inside a bigger text.Imagine you have a book and want to find if a certain word appears in it.
🎯 Goal: Build a program that checks if a given pattern is inside a text using substring search.You will create the text and pattern, then write code to find if the pattern exists in the text.
📋 What You'll Learn
Create a string variable called text with the value "hello world"
Create a string variable called pattern with the value "world"
Write a function called contains_pattern that takes text and pattern and returns 1 if pattern is found in text, else 0
Use a simple loop and comparison to check for the pattern inside the text
Print "Pattern found" if the pattern exists in the text, else print "Pattern not found"
💡 Why This Matters
🌍 Real World
Substring search is used in text editors, search engines, and data filtering tools to find words or patterns inside larger texts.
💼 Career
Understanding substring search helps in software development roles involving text processing, search features, and data analysis.
Progress0 / 4 steps
1
Create the text and pattern strings
Create a string variable called text and set it to "hello world". Also create a string variable called pattern and set it to "world".
DSA C
Hint
Use char text[] = "hello world"; and char pattern[] = "world"; to create the strings.
2
Write the contains_pattern function header
Write a function called contains_pattern that takes two parameters: char *text and char *pattern. The function should return an int.
DSA C
Hint
Write int contains_pattern(char *text, char *pattern) to start the function.
3
Implement the substring search logic
Inside the contains_pattern function, write code to check if pattern exists inside text. Return 1 if found, else return 0. Use loops and character comparisons.
DSA C
Hint
Use nested loops to compare each character of pattern with text starting at each position.
4
Print the search result
Call contains_pattern(text, pattern) in main. If it returns 1, print "Pattern found". Otherwise, print "Pattern not found".
DSA C
Hint
Use if (contains_pattern(text, pattern)) and print accordingly.
Practice
(1/5)
1. What is the main goal of substring search algorithms in strings?
easy
A. To find if a smaller string exists inside a larger string
B. To sort the characters of a string alphabetically
C. To reverse the entire string
D. To count the total number of characters in a string
Solution
Step 1: Understand substring search purpose
Substring search algorithms check if a smaller string (pattern) appears inside a bigger string (text).
Step 2: Compare options with definition
Only To find if a smaller string exists inside a larger string describes finding a smaller string inside a larger one, which matches substring search.
Final Answer:
To find if a smaller string exists inside a larger string -> Option A
Hint: Substring search means finding a smaller string inside a bigger one [OK]
Common Mistakes:
Confusing substring search with sorting or reversing strings
Thinking substring search counts characters
Mixing substring search with string length calculation
2. Which of the following is the correct syntax to check if string pattern is a substring of string text in C?
easy
A. if (text.find(pattern)) { /* found */ }
B. if (text.contains(pattern)) { /* found */ }
C. if (pattern in text) { /* found */ }
D. if (strstr(text, pattern) != NULL) { /* found */ }
Solution
Step 1: Recall C substring search function
In C, strstr() returns a pointer to the first occurrence of pattern in text, or NULL if not found.
Step 2: Check each option's syntax
if (strstr(text, pattern) != NULL) { /* found */ } uses strstr correctly with NULL check. Options A, B, C use syntax from other languages or invalid in C.
Final Answer:
if (strstr(text, pattern) != NULL) { /* found */ } -> Option D
Quick Check:
C substring search uses strstr() [OK]
Hint: Use strstr() in C to find substring, check for NULL [OK]
Common Mistakes:
Using methods from other languages like contains() or find()
Not checking if strstr() returns NULL
Confusing order of arguments in strstr()
3. What will be the output of the following C code snippet?
strstr(text, "wor") returns pointer to first occurrence of "wor" in "hello world", which starts at index 6.
Step 2: Calculate pointer difference
Subtracting text pointer from pos gives index 6, which is printed.
Final Answer:
6 -> Option A
Quick Check:
Substring "wor" starts at index 6 [OK]
Hint: Pointer difference in strstr() gives substring start index [OK]
Common Mistakes:
Printing pointer value instead of index difference
Assuming substring starts at 0 or 3 incorrectly
Not checking if strstr() returns NULL before subtracting
4. Identify the error in the following C code for substring search:
char *find_substring(char *text, char *pattern) {
for (int i = 0; i <= strlen(text); i++) {
if (strncmp(&text[i], pattern, strlen(pattern)) == 0) {
return &text[i];
}
}
return NULL;
}
medium
A. Function should return int index, not pointer
B. strncmp() is used incorrectly; should use strcmp() instead
C. The loop condition should be 'i < strlen(text) - strlen(pattern) + 1' to avoid overflow
D. No error; code works correctly
Solution
Step 1: Analyze loop boundary
The loop runs from 0 to strlen(text), but comparing substrings beyond text length minus pattern length causes overflow.
Step 2: Correct loop condition
Loop should run until i <= strlen(text) - strlen(pattern) to safely compare substrings of pattern length.
Final Answer:
The loop condition should be 'i < strlen(text) - strlen(pattern) + 1' to avoid overflow -> Option C
Quick Check:
Loop boundary must prevent substring overflow [OK]
Hint: Loop till text length minus pattern length to avoid overflow [OK]
Common Mistakes:
Looping beyond valid substring start positions
Using strcmp instead of strncmp for partial comparison
Ignoring return type correctness
5. You want to find all occurrences of substring pat in string txt using C. Which approach correctly finds all start indices of pat in txt?
hard
A. Use strstr() once and return the first found position only
B. Use a loop with strstr() starting from last found position + 1 until strstr() returns NULL
C. Use strcmp() on entire text and pattern directly
D. Use strlen() to compare lengths and decide if substring exists
Solution
Step 1: Understand strstr() usage for multiple occurrences
strstr() returns pointer to first occurrence. To find all, repeatedly call strstr() starting after last found position.
Step 2: Evaluate options
Use a loop with strstr() starting from last found position + 1 until strstr() returns NULL correctly describes looping with strstr() advancing pointer. Use strstr() once and return the first found position only finds only first occurrence. Options C and D do not find all occurrences.
Final Answer:
Use a loop with strstr() starting from last found position + 1 until strstr() returns NULL -> Option B
Quick Check:
Loop with strstr() to find all occurrences [OK]
Hint: Loop with strstr() advancing pointer to find all matches [OK]
Common Mistakes:
Using strstr() only once for all matches
Using strcmp() which compares whole strings only
Relying on length checks without searching
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.