[英]C strncmp return 1
我試圖在本機 C 中實現我自己的 strncmp,然后我開始做一些像這樣的測試
#include <string.h>
#include <stdio.h>
printf("%d\n", strncmp("test\200", "test\0", 6));
在這種特殊情況下 strncmp 的返回值為 1; 誰能解釋我為什么?
我很確定這是因為 \200 超出了默認 ASCII,然后我實現了一個條件,如果 char 不在 0 和 127 之間,我將返回 1,對嗎?
每個手冊頁:
int strncmp(const char *s1, const char *s2, size_t n);
...
strcmp() 返回一個 integer 表示比較的結果,如下:
• 0,如果 s1 和 s2 相等;
• 如果 s1 小於 s2,則為負值;
• 如果s1 大於s2,則為正值。
否則數值未定義。
這意味着\200
大於\0
(字符串結尾),更簡潔地可以寫成:
#include <stdio.h>
#include <string.h>
int main(void) {
printf("%d\n", strncmp("\200", "", 1));
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.