Skip to main content
2 of 2
added 1145 characters in body; added 151 characters in body
Keith Nicholas
  • 1.6k
  • 10
  • 16

I'd change it more like...

char* start_of_s = s;
char* start_of_t = t;
if(s == NULL || t==NULL) return 0;
while(*s) s++;
while(*t) t++;
while(*s == *t && s > start_of_s && t> start_of_t)
{
    s--; t--;
}
return (t == start_of_t) && (*s == *t);

also unit tested with your tests (and mine), except I caled it "string_is_at_end". I use http://code.google.com/p/seatest/ for unit testing. ( mainly coz I wrote it, though I have a much later version which I haven't released yet)

    assert_true(string_is_at_end("12345",""));
    assert_true(string_is_at_end("123","23"));
    assert_true(string_is_at_end("123","3"));
    assert_false(string_is_at_end("","123"));
    assert_false(string_is_at_end("123","1"));
    assert_false(string_is_at_end("123","2"));
    assert_true(string_is_at_end("12345", "45"));
    assert_false(string_is_at_end("12345", "35"));
    assert_false(string_is_at_end("45", "345"));
    assert_true(string_is_at_end("12345", "12345"));
    assert_true(string_is_at_end("12345", "5"));
    assert_false(string_is_at_end("12345", "4"));
    assert_true(string_is_at_end("12345", ""));
    assert_false(string_is_at_end("12345", "+"));
    assert_false(string_is_at_end("12345", "a2345"));
    assert_true(string_is_at_end("", ""));
    assert_false(string_is_at_end("", "Z"));
    assert_true(string_is_at_end("1", "1"));
    assert_false(string_is_at_end("1", "1A"));
    assert_false(string_is_at_end(0, "1A"));
    assert_false(string_is_at_end("1", 0));
Keith Nicholas
  • 1.6k
  • 10
  • 16