zoukankan      html  css  js  c++  java
  • C连载16-char类型数组和null字符,以及常用两种方法对比

    一、char类型数组和null字符

    • 字符串都是被存储在char类型数组里面,字符被存储在相邻的存储单元中,每个单元存储一个字符。
    • 每个字符串末尾会有一个,这就是空字符串,C语言用它来标记字符串结束,空字符串不是数字0,他是非打印字符,其ASCII码是0。
    • 数组定义:同类型的数据元素的有序序列。

    1.使用字符串

    #include<stdio.h>
    #define PARISE "You are an extraordinary being"
    #pragma warning(disable:4996)
    int D16_1_praisel(void) {
    	char name[40];
    
    	printf("What's your name?");
    	scanf("%s", name);
    	printf("Hello,%s. %s
    ", name, PARISE);
    
    	return 0;
    }
    

    运行显示:
    16.1

    • 编译器会自动给字符串的末尾添加空字符

    注意点:我们在进行输入名字的时候是两个单词的时候,比如:Lebron James,那么scanf()会读取空格之前的第一个单词,不会读取后面的单词,也可以使用方法fgets()后面再介绍。

    2.strlen()函数

    • sizeof运算符,它以字节为单给出对象的大小。strlen()函数给出字符串中的字符长度。因为1字节存储一个字符二者结果可能相同,但本质并不是一种计算方式。
    #include<stdio.h>
    #include<string.h>   /*提供strlen()函数的原型*/
    #define PRAISE "You are an extraordinaty being."
    #pragma warning(disable:4996)
    
    int D16_2_praise2(void) {
    	char name[40];
    
    	printf("What's your name?");
    	scanf("%s", name);
    	printf("Hello,%s.%s
    ", name, PRAISE);
    	printf("Your name of %zd letters occupies %zd memory cells.
    ", strlen(name), sizeof(name));
    	printf("The phrase of praise has %zd letters ", strlen(PRAISE));
    	printf("and occupise %zd memory cells.
    ", sizeof PRAISE);
    
    	return 0;
    }
    

    运行显示:
    16.2

    注意点:
    (1)如果使用ANSI C之前的编译器,必须要移除这一行:#include<string.h>;之前的编译器使用的是strings.h这个头文件;
    (2)C99和C11标准专门为sizeof运算符的返回类型特地添加了%zd转换说明,对于函数strlen()也同样适用。早期的C需要使用实际的返回类型(通常是unsigned或unsigned long)
    (3)sizeof后面接括号的问题,如果是变量或者字面量,括号可有可无;如果是类型则需要括号,这里推荐都使用括号为好。

    二、源码:

  • 相关阅读:
    js阻止事件冒泡和标签默认行为
    Sql server不同数据类型间拼接(+)
    win7 激活相关
    查找算法
    算法基础
    requests库使用
    python urllib和urllib3包使用
    爬虫工具fiddle在firefox浏览器中的使用
    爬虫抓包工具Fiddle设置
    爬虫抓包工具Charles设置
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13352600.html
Copyright © 2011-2022 走看看