首页 > 编程语言 > 详细

C连载16-char类型数组和null字符,以及常用两种方法对比

时间:2020-07-21 12:20:33      阅读:64      评论:0      收藏:0      [点我收藏+]

一、char类型数组和null字符

  • 字符串都是被存储在char类型数组里面,字符被存储在相邻的存储单元中,每个单元存储一个字符。
  • 每个字符串末尾会有一个\0,这就是空字符串,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\n", name, PARISE);

	return 0;
}

运行显示:
技术分享图片

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

注意点:我们在进行输入名字的时候是两个单词的时候,比如: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\n", name, PRAISE);
	printf("Your name of %zd letters occupies %zd memory cells.\n", strlen(name), sizeof(name));
	printf("The phrase of praise has %zd letters ", strlen(PRAISE));
	printf("and occupise %zd memory cells.\n", sizeof PRAISE);

	return 0;
}

运行显示:
技术分享图片

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

二、源码:

C连载16-char类型数组和null字符,以及常用两种方法对比

原文:https://www.cnblogs.com/ruigege0000/p/13352600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!