2.21字符串初始化

【注:本程序验证是使用vs2013版】

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)

int main(void){
    /*
        不推荐的字符串初始化方式
        c语言是没有字符串类型的,可以通过单个字符数据模拟成字符串
        c语言字符串,以字符串‘\0’,数字0结尾
    */
    
    //1.不指定长度,也没有0结束符(不推荐这样使用)
    char buf[] = { 'a', 'b', 'c' };
    printf("strlen(buf):%d\n", strlen(buf));//实际的字符串长度,这个长度会根据实际字符个数,按照一定的规则,自动调节长度
    printf("sizeof(buf):%d\n", sizeof(buf));//buf的长度
    printf("buf = %s\n", buf);//尾部会有乱码,因为接收到结束符没有结束符
  
//2、指定长度,后面没有赋值的元素,自动补零 char buf2[50] = { 'a', 'b', 'c' }; printf("strlen(buf):%d\n", strlen(buf2));//实际的字符串长度 printf("sizeof(buf):%d\n", sizeof(buf2));/buf的长度 printf("buf2 = %s\n", buf2);
  
//3、不指定长度,所有元素赋值为0 char buf3[] = { 0 }; printf("strlen(buf):%d\n", strlen(buf3)); printf("sizeof(buf):%d\n", sizeof(buf3)); printf("buf3 = %s\n", buf3);
  
//4、数组越界,不可以这样使用 //char buf4[2] = {'1','2','3'}; //5、不指定长度的,正确的结束符 char buf5[] = { 'a', 'b', 'c', 0 }; printf("strlen(buf):%d\n", strlen(buf5)); printf("sizeof(buf):%d\n", sizeof(buf5)); printf("buf5 = %s\n", buf5);
char buf6[] = { 'a', 'b', 'c', '\0' }; printf("strlen(buf):%d\n", strlen(buf5)); printf("sizeof(buf):%d\n", sizeof(buf5)); printf("buf6 = %s\n", buf6);
/* 推荐的字符串初始化方式 使用双引号的字符串初始化方式,末尾会自动添0    strlen:测试字符串长度,不包括数字0,\0
    sizeof:不指定数组长度: 测试数组长度,包括数字0,\0,
         指定数组长度: 指定的长度

*/
char buf7[] = "asdqwdq"; printf("strlen(buf):%d\n", strlen(buf7)); printf("sizeof(buf):%d\n", sizeof(buf7));   
//跟上边结果不一致 char buf8[100] = "asdqwdq"; printf("strlen(buf):%d\n", strlen(buf8)); printf("sizeof(buf):%d\n", sizeof(buf8));
  
//注意"012"就 相当于 "\n";知道有这种情况就可以,这里换行符也占据一个字节长度 char buf9[] = "a\012b"; printf("strlen(buf):%d\n", strlen(buf9)); printf("sizeof(buf):%d\n", sizeof(buf9)); printf("buf9 = %s\n", buf9);
  
/*面试题,问打印出的内容*/ char tmp[50] = { '1', 'a', 'b', '0', '7' }; char tmp2[50] = { '1', 'a', 'b', 0, '7' }; char tmp3[50] = { '1', 'a', 'b', '\0', '7' }; printf("tmp = %s\n", tmp); printf("tmp2 = %s\n", tmp2); printf("tmp3 = %s\n", tmp3); printf("\n"); system("pause"); return 0; }

猜你喜欢

转载自www.cnblogs.com/wlstm/p/11094820.html