Bird
Raised Fist0
DSA Cprogramming~10 mins

String Traversal and Character Access in DSA C - Execution Trace

Choose your learning style10 modes available
Concept Flow - String Traversal and Character Access
Start at index = 0
↓
Check: index < string length?
No→EXIT
Yes↓
Access character at index
↓
Process character (e.g., print)
↓
Increment index by 1
↩Back to Check
This flow shows how we start from the first character of a string, check if we are still inside the string, access and process the character, then move to the next one until we reach the end.
Execution Sample
DSA C
char str[] = "hello";
int i = 0;
while (str[i] != '\0') {
    printf("%c", str[i]);
    i++;
}
This code prints each character of the string "hello" one by one by accessing each character using its index.
Execution Table
Stepi (index)Condition (str[i] != '\0')Character AccessedActionOutput
10h != '\0' (True)'h'Print 'h', i++h
21e != '\0' (True)'e'Print 'e', i++he
32l != '\0' (True)'l'Print 'l', i++hel
43l != '\0' (True)'l'Print 'l', i++hell
54o != '\0' (True)'o'Print 'o', i++hello
65'\0' != '\0' (False)N/AExit loophello
💡 At step 6, str[5] is '\0', so condition is false and loop ends.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5Final
i0123455
Key Moments - 3 Insights
Why does the loop stop when str[i] is '\0'?
The '\0' character marks the end of the string. When str[i] equals '\0', the condition str[i] != '\0' becomes false, so the loop stops as shown in execution_table step 6.
Why do we start with i = 0 instead of 1?
String indices start at 0 in C. So str[0] is the first character. This is why the loop starts with i = 0, as shown in execution_table step 1.
What happens if we forget to increment i inside the loop?
If i is not incremented, the loop will keep accessing the same character forever, causing an infinite loop. The execution_table shows i increasing each step to avoid this.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of i at step 4?
A4
B3
C2
D5
💡 Hint
Check the 'i (index)' column in execution_table row for step 4.
At which step does the loop condition become false?
AStep 5
BStep 4
CStep 6
DStep 7
💡 Hint
Look at the 'Condition' column where it shows False in execution_table.
If the string was "hi" instead of "hello", how many times would the loop run?
A2 times
B3 times
C5 times
D1 time
💡 Hint
Check how many characters before '\0' in the string and compare with execution_table steps.
Concept Snapshot
String Traversal and Character Access in C:
- Use an index starting at 0 to access characters.
- Loop until you reach the '\0' end character.
- Access characters with str[i].
- Increment i each loop to move forward.
- Stop when str[i] == '\0'.
Full Transcript
This lesson shows how to go through each character of a string in C using an index. We start at index 0, check if the character is not the end marker '\0', print the character, then move to the next index. We repeat until we reach '\0', which means the string ended. The code example prints 'hello' one letter at a time. The execution table tracks the index, condition, character accessed, and output at each step. Key points include why the loop stops at '\0', why indexing starts at 0, and the importance of incrementing the index to avoid infinite loops.

Practice

(1/5)
1. What does the expression str[0] represent when str is a string in C?
easy
A. The first character of the string
B. The length of the string
C. The last character of the string
D. A pointer to the string

Solution

  1. Step 1: Understand string indexing in C

    In C, strings are arrays of characters. Indexing starts at 0, so str[0] accesses the first character.
  2. Step 2: Identify what str[0] returns

    It returns the character stored at the first position of the string, not the length or pointer.
  3. Final Answer:

    The first character of the string -> Option A
  4. Quick Check:

    str[0] = first character [OK]
Hint: Remember: string indexing starts at zero in C [OK]
Common Mistakes:
  • Confusing character access with string length
  • Thinking indexing starts at 1
  • Mixing pointer and character access
2. Which of the following is the correct way to traverse a string str of length n in C using a for loop?
easy
A. for (int i = 1; i < n; i++)
B. for (int i = 0; i <= n; i++)
C. for (int i = 0; i < n; i++)
D. for (int i = 1; i <= n; i++)

Solution

  1. Step 1: Understand string indexing and loop bounds

    String indices in C start at 0 and go up to n-1 for length n.
  2. Step 2: Choose loop condition to cover all characters

    The loop should run from 0 to n-1, so i < n is correct.
  3. Final Answer:

    for (int i = 0; i < n; i++) -> Option C
  4. Quick Check:

    Loop from 0 to n-1 = for (i=0; i<n; i++) [OK]
Hint: Loop from 0 to less than length for strings [OK]
Common Mistakes:
  • Using <= n causes out-of-bounds access
  • Starting loop at 1 misses first character
  • Confusing string length with last index
3. What is the output of the following C code?
char str[] = "hello";
for (int i = 0; i < 5; i++) {
    printf("%c-", str[i]);
}
medium
A. hello-
B. h-e-l-l-o-
C. h e l l o
D. h-e-l-l-o

Solution

  1. Step 1: Analyze the loop and print statement

    The loop runs from i=0 to 4, printing each character followed by a dash.
  2. Step 2: Trace each iteration output

    Characters printed: 'h-', 'e-', 'l-', 'l-', 'o-'. Combined output is "h-e-l-l-o-".
  3. Final Answer:

    h-e-l-l-o- -> Option B
  4. Quick Check:

    Each char + '-' printed = h-e-l-l-o- [OK]
Hint: Look at printf format and loop range carefully [OK]
Common Mistakes:
  • Ignoring the dash after each character
  • Printing the whole string once instead of chars
  • Confusing spaces with dashes
4. Identify the error in the following code snippet that tries to print each character of a string str.
char str[] = "world";
for (int i = 1; i <= 5; i++) {
    printf("%c", str[i]);
}
medium
A. Both A and B are errors
B. Loop condition should be i < 5 instead of <= 5
C. No error, code works fine
D. Loop starts at 1 and misses the first character

Solution

  1. Step 1: Check loop start index

    Loop starts at 1, so it skips str[0] which is the first character.
  2. Step 2: Check loop end condition

    Loop runs while i <= 5, but valid indices are 0 to 4. Accessing str[5] causes out-of-bounds error.
  3. Final Answer:

    Both A and B are errors -> Option A
  4. Quick Check:

    Start at 0 and use i < length to avoid errors [OK]
Hint: Loop from 0 to less than length to avoid errors [OK]
Common Mistakes:
  • Starting loop at 1 and missing first char
  • Using <= length causing out-of-bounds access
  • Ignoring array indexing rules
5. Given a string str of unknown length, which of the following code snippets correctly prints all characters until the null terminator in C?
hard
A. for (int i = 0; str[i] != '\0'; i++) { printf("%c", str[i]); }
B. for (int i = 0; i < strlen(str); i++) { printf("%c", str[i]); }
C. while (*str != '\0') { printf("%c", *str); str++; }
D. All of the above

Solution

  1. Step 1: Analyze for (int i = 0; str[i] != '\0'; i++) { printf("%c", str[i]); }

    Loops until character is not null terminator, printing each character. Correct method.
  2. Step 2: Analyze for (int i = 0; i < strlen(str); i++) { printf("%c", str[i]); } and C

    for (int i = 0; i < strlen(str); i++) { printf("%c", str[i]); } uses strlen to get length, then loops printing characters. while (*str != '\0') { printf("%c", *str); str++; } uses pointer traversal until null terminator. Both are correct.
  3. Step 3: Combine results

    All three methods correctly print the string characters until the null terminator.
  4. Final Answer:

    All of the above -> Option D
  5. Quick Check:

    All methods stop at '\0' and print chars [OK]
Hint: Any loop stopping at '\0' prints full string safely [OK]
Common Mistakes:
  • Not checking for null terminator causing overflow
  • Using wrong loop conditions
  • Modifying string pointer incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard