📖 Scenario: Imagine you are working on a simple text editor that needs to reverse words typed by the user. Reversing strings is a common task in many programs, such as creating palindromes or encoding messages.
🎯 Goal: Build a C program that reverses a given string using a character array and a loop.
📋 What You'll Learn
Create a character array with a specific string
Create an integer variable to hold the string length
Use a for loop to reverse the string into a new array
Print the reversed string
💡 Why This Matters
🌍 Real World
Reversing strings is useful in text processing, coding challenges, and creating palindromes or encryption.
💼 Career
Understanding string manipulation is fundamental for software developers, especially in areas like data processing, algorithms, and system programming.
Progress0 / 4 steps
1
Create the original string
Create a character array called original and initialize it with the exact string "hello".
DSA C
Hint
Use double quotes to create a string in C.
2
Calculate the string length
Create an integer variable called length and set it to the length of original using strlen(original). Include #include <string.h> at the top.
DSA C
Hint
Remember to include the string library to use strlen.
3
Reverse the string using a loop
Create a character array called reversed with size length + 1. Use a for loop with variable i from 0 to length - 1 to copy characters from original[length - 1 - i] to reversed[i]. After the loop, set reversed[length] to '\0' to end the string.
DSA C
Hint
Remember to add the null character at the end of the reversed string.
4
Print the reversed string
Use printf to print the string reversed.
DSA C
Hint
Use printf("%s\n", reversed); to print the reversed string.
Practice
(1/5)
1. What does the string reversal operation do to the string "hello"?
easy
A. It changes it to "olleh"
B. It changes it to "hello" (no change)
C. It removes all vowels
D. It converts all letters to uppercase
Solution
Step 1: Understand string reversal
Reversing a string means writing its characters in the opposite order.
Step 2: Apply reversal to "hello"
The characters 'h', 'e', 'l', 'l', 'o' become 'o', 'l', 'l', 'e', 'h'.
Final Answer:
"olleh" -> Option A
Quick Check:
Reverse("hello") = "olleh" [OK]
Hint: Reverse means flip characters order [OK]
Common Mistakes:
Thinking reversal changes letters, not order
Confusing reversal with uppercase conversion
Assuming reversal removes characters
2. Which of the following C code snippets correctly reverses a string str in place?
easy
A. for(int i = 0; i < strlen(str)/2; i++) { char temp = str[i]; str[i] = str[strlen(str)-1-i]; str[strlen(str)-1-i] = temp; }
B. for(int i = 0; i < strlen(str); i++) { str[i] = str[strlen(str)-1-i]; }
C. strrev(str);
D. for(int i = 0; i < strlen(str); i++) { str[i] = toupper(str[i]); }
Solution
Step 1: Understand in-place reversal logic
Swap characters from start and end moving towards center, stopping at half length.
Swap str[0] and str[4]: 'a' and 'e' -> str = "ebcda"; i=1, j=3
Swap str[1] and str[3]: 'b' and 'd' -> str = "edcba"; i=2, j=2
Loop ends as i == j.
Step 2: Print the reversed string
After swaps, str is "edcba" which is printed.
Final Answer:
edcba -> Option D
Quick Check:
Swapped pairs reverse string [OK]
Hint: Swapping ends moves characters inward [OK]
Common Mistakes:
Not updating i and j correctly
Confusing loop condition causing infinite loop
Printing original string without reversal
4. Identify the error in this C code that attempts to reverse a string str:
int len = strlen(str);
for(int i = 0; i <= len/2; i++) {
char temp = str[i];
str[i] = str[len - i];
str[len - i] = temp;
}
medium
A. Loop condition should be i < len/2 not <=.
B. Missing null terminator assignment after reversal.
C. Index len - i is out of bounds; should be len - i - 1.
D. Using strlen inside loop causes performance issue.
Solution
Step 1: Check index usage in swapping
String indices go from 0 to len-1. Using str[len - i] accesses one past last character (out of bounds).
Step 2: Correct index to len - i - 1
Adjusting index fixes out-of-bounds error and correctly swaps characters.
Final Answer:
Index len - i is out of bounds; should be len - i - 1 -> Option C
Quick Check:
String last index = len-1, not len [OK]
Hint: String last index = length - 1 [OK]
Common Mistakes:
Using length as index directly
Loop running one extra iteration
Ignoring null terminator position
5. You want to reverse only the vowels in a string "education" using C. Which approach correctly achieves this?
hard
A. Reverse entire string and then remove consonants.
B. Use two pointers from start and end, swap vowels only, skip consonants.
C. Copy vowels to a new string and print it reversed.
D. Replace vowels with uppercase letters in place.
Solution
Step 1: Understand vowel-only reversal
We must swap vowels at start and end positions, ignoring consonants.
Step 2: Use two pointers approach
Initialize pointers at string start and end, move inward skipping consonants, swap vowels when both pointers point to vowels.
Step 3: Confirm other options are incorrect
Reverse entire string and then remove consonants. reverses whole string, not vowels only. Copy vowels to a new string and print it reversed. prints vowels only, losing consonants. Replace vowels with uppercase letters in place. changes vowels but does not reverse.
Final Answer:
Two pointers swapping vowels only -> Option B
Quick Check:
Two-pointer vowel swap reverses vowels [OK]
Hint: Swap vowels with two pointers, skip consonants [OK]
Common Mistakes:
Reversing entire string instead of vowels only
Removing consonants accidentally
Changing vowels without reversing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.