歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言中字符串結束符探究

C語言中字符串結束符探究

#include <stdio.h>
#include <string.h>
int main()
{
        char *a = "hello world";
        int i = 0;
        for(i = 0; i < 12; i++)
                if(a[i] == '\0')
                        printf("\\0\n");
                else
                        putchar(a[i]);
//輸出結果為:hello world\0    表明字符串常量最後默認會添加一個'\0'這個字符串結束符。
        printf("\n");
        printf("The length of \"hello world\" = %d\n",strlen(a)); 
//輸出結果為: 11  。表明strlen不包括'\0’這個字符串結束符。
        printf("\n");

        char buf[10] = "helle world";
        for(i = 0; i < 11; i++)
                if(buf[i] == '\0')
                        printf("\\0\n");
                else
                        putchar(buf[i]);
/**輸出為 hello worl@    。輸出了11個字節。最後一個字節不是'\0',而是@(這個字節是隨機的)。
從上面情況可以看出,將數組中賦值字符串常量時,如果字符串常量長度大於數組長度,數組最後一位並不是'\0',如果字符串常量長度小於數據長度,那麼數據中剩余部分將會用'\0'補全。如buf[10] = "hello",那麼buf的buf[5] ---buf[9]都將會被填充為'\0'
**/
        printf("\n");
        char *b = "hello world";
        char ba[10] = "hello world";
        printf("&a = %p,&b = %p,&buf = %p,&ba = %p \n",a,b,buf,ba);
        if(*(a+11) == '\0')
                printf("\\0\n");
        return 0;
}

Copyright © Linux教程網 All Rights Reserved