diff --git a/src/string/src/lib.rs b/src/string/src/lib.rs
index ce2a68c7f525e276319042e119e43ccd721cdcc1..c7178b5c3c160d755444b5cb5433ed1a7faa8dae 100644
--- a/src/string/src/lib.rs
+++ b/src/string/src/lib.rs
@@ -161,7 +161,7 @@ pub unsafe extern "C" fn strncmp(s1: *const c_char, s2: *const c_char, n: usize)
 
     for (&a, &b) in s1.iter().zip(s2.iter()) {
         let val = (a as c_int) - (b as c_int);
-        if val != 0 || a == 0 {
+        if a != b || a == 0 {
             return val;
         }
     }
diff --git a/tests/string/strncmp.c b/tests/string/strncmp.c
index 3e96e5c36219e25c22a302e372436fac666b2790..efb2bea9783af619a6bdf1995ab3b4feaff6b813 100644
--- a/tests/string/strncmp.c
+++ b/tests/string/strncmp.c
@@ -9,7 +9,5 @@ int main(int argc, char* argv[]) {
     printf("%d\n", strncmp("a", "c", 1));
     printf("%d\n", strncmp("a", "a", 2));
 
-    puts("test");
-
     return 0;
 }