簡體   English   中英

C strncmp 返回 1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM