#include <stdio.h>
int custom_strcmp(const char *a, const char *b) {
int i = 0;
while (a[i] != '\0' && b[i] != '\0') {
if (a[i] != b[i]) {
return a[i] - b[i]; // Return ASCII difference
}
i++;
}
return a[i] - b[i]; // One might be longer than the other
}
int main() {
char a[101], b[101];
fgets(a, sizeof(a), stdin);
fgets(b, sizeof(b), stdin);
// Remove newline
int i = 0;
while (a[i]) {
if (a[i] == '\n') { a[i] = '\0'; break; }
i++;
}
i = 0;
while (b[i]) {
if (b[i] == '\n') { b[i] = '\0'; break; }
i++;
}
printf("%d", custom_strcmp(a, b));
return 0;
}
What does strcmp() really do?
It walks through both strings character by character. If it finds a mismatch, it returns the difference of their ASCII values. If it finishes both strings and finds no mismatch, it returns 0.
Why it’s important in firmware?
Solution Logic
Input
apple apple
Expected Output
0