代码之家  ›  专栏  ›  技术社区  ›  Tãrún Köśhy

strlen()即使在空终止符[重复]之后也会对字符进行计数

  •  2
  • Tãrún Köśhy  · 技术社区  · 7 年前
    #include<stdio.h>
    #include<string.h>
    
    int main() {
    char a[100]="1234\0567"; //Answer: 6
    int len=strlen(a);
    printf("%d",len); 
    }
    

    但是,如果在0和5之间包含空格,则返回4作为答案

    char a[100]="1234\0 567"; //Answer: 4
    

    我错过什么了吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   0___________    7 年前

    你的第一个版本有八进制数 \056 \0 性格

    在类似情况下,使用 \000 取而代之的是八进制序列:

    /* from your example*/ char a[100]="1234\000567";
    
        2
  •  1
  •   Nisse Engström sting_roc    7 年前

    这个 \056 8. ,十进制-(46) 10