diff --git a/src/strcmp.c b/src/strcmp.c index f2b86bb..7de36a5 100644 --- a/src/strcmp.c +++ b/src/strcmp.c @@ -17,26 +17,26 @@ */ #include /* fprintf(3), stderr */ -#include /* EXIT_FAILURE */ +#include /* size_t */ #include /* EX_USAGE */ -static char *program_name = "strcmp"; +static *program_name = "strcmp"; int main(int argc, char *argv[]){ - int i; - - if(argc < 3){ + if (argc < 3) { fprintf(stderr, "Usage: %s string string...\n", - argv[0] == NULL ? program_name : argv[0]); + argv[0] == NULL ? program_name : argv[0] + ); return EX_USAGE; } - for(; *argv[1] != '\0'; ++argv[1]) - for(i = 2; i < argc; ++i) - if(*argv[i-1] > *argv[i]) - return 1; - else if(*argv[i-1] < *argv[i]++) - return -1; /* actually 255 */ + for (; *argv[1] != '\0'; ++argv[1]) { /* iterate chars in ref */ + /* iterate argc */ + for (size_t i = 2 /* ref cmp */; i < argc; ++argv[i], ++i) { + /* this doesn't overrun because of nul termination */ + if (*argv[i-1] != *argv[i]) { return *argv[i-1] - *argv[i]; } + } + } return 0; }