#include <stdio.h>
void reverse_string(char *str) {
int start = 0;
int end = 0;
// Find length of string
while (str[end] != '\0') {
end++;
}
end--; // Move to last valid character
// Swap characters from both ends
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
char str[101];
fgets(str, sizeof(str), stdin);
// Remove newline
int i = 0;
while (str[i] != '\0') {
if (str[i] == '\n') {
str[i] = '\0';
break;
}
i++;
}
reverse_string(str);
printf("%s", str);
return 0;
}
What is this about?
This problem uses pointer-based logic (or index swaps) to reverse characters in the same array, without extra memory.
Why it matters in firmware?
Solution Logic
Input
firmware
Expected Output
erawmrif