Question
Answer and Explanation
Skipping past trailing and leading spaces in C involves iterating through a string and adjusting the start and end pointers to ignore these spaces. Here's how you can do it:
1. Skipping Leading Spaces:
- Iterate through the string from the beginning until you find a non-space character. Update the starting pointer to this position.
2. Skipping Trailing Spaces:
- Iterate through the string from the end until you find a non-space character. Update the ending pointer to this position.
3. Implementation Example:
Here's a C code snippet demonstrating how to skip leading and trailing spaces:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void trim(char str) {
int start = 0;
int end = strlen(str) - 1;
// Skip leading spaces
while (isspace((unsigned char)str[start])) {
start++;
}
// Skip trailing spaces
while (end >= start && isspace((unsigned char)str[end])) {
end--;
}
// Adjust string to exclude leading and trailing spaces
int j = 0;
for (int i = start; i <= end; i++) {
str[j++] = str[i];
}
str[j] = '\\0'; // Null-terminate the trimmed string
}
int main() {
char str[] = " Hello, World! ";
printf("Original string: '%s'\\n", str);
trim(str);
printf("Trimmed string: '%s'\\n", str);
return 0;
}
4. Explanation:
- The `trim` function takes a character array (string) as input.
- It initializes `start` to 0 (beginning of the string) and `end` to the last character index.
- It uses `isspace` to check for whitespace characters.
- The first `while` loop increments `start` until a non-space character is found, effectively skipping leading spaces.
- The second `while` loop decrements `end` until a non-space character is found, effectively skipping trailing spaces.
- Finally, it copies the characters from the adjusted `start` to `end` positions into the beginning of the string and null-terminates it.
By using the `isspace` function from `ctype.h`, you ensure that various whitespace characters (space, tab, newline, etc.) are properly handled. Remember to include necessary header files like `stdio.h`, `string.h`, and `ctype.h`. This approach modifies the original string in place.