3.1 初步了解字符串

1.简单使用字符串

本节内容在书4.1

上一篇最后提到C语言中的字符串可以通过char数组实现,下面我们用一个简单的小程序看一下:

# include <stdio.h>
# include <string.h>

int main(void) {
	char input[16];
	int number;
	printf("请输入一个单词,要求16个字母以下:\n");
	scanf("%s", input);
	printf("再输入一个数字:\n");
	scanf("%d", &number);
	int letters = strlen(input);
	int size    = sizeof input;
	printf("你输入的单词是:%s\n你输入的单词有[%d]个字母\n你输入的单词占用了%d字节存储空间\n你输入的数字是: %d\n",
			input, letters, size, number); 
	return 0;
}

这里引入了新的头文件 string.h,由名字可以得知,是专门用来处理字符串的.

运行结果:

请输入一个单词,要求16个字母以下:
string
再输入一个数字:
6789
你输入的单词是: string
你输入的单词有[6]个字母
你输入的单词占用了16字节存储空间
你输入的数字是: 6789

出现了一个新的函数strlen()和新的运算符sizeof.strlen()见名知意,就是返回传入字符串的字符个数.sizeof则是返回占用的字节数.

而在printf()中,出现了使用&和不使用&的情况,这个在后面章节的内容中会提到.

2.对比strlen()和sizeof

本节内容在书4.2.3章和3.4.9章.

int main(void) {
	char arr1[16] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
	char arr2[32]; 
	printf("请输入一个单词,要求32个字母以下.\n") ;
	scanf("%s", arr2);
	int arrlen1 = strlen(arr1);
	int arrlen2 = strlen(arr2);
	int size1   = sizeof arr1;
	int size2   = sizeof arr2;
	printf("arr1: %s\narr2: %s\n", arr1, arr2);
	printf("arr1 strlen = %d\narr2 strlen = %d\n", arrlen1, arrlen2);
	printf("arr1 sizeof = %d\narr2 sizeof = %d\n", size1,   size2);
	return 0;
}

运行结果:

请输入一个单词,要求32个字母以下.
qwertyuiopasdfghjkl
arr1: abcdefghij
arr2: qwertyuiopasdfghjkl
arr1 strlen = 10
arr2 strlen = 19
arr1 sizeof = 16
arr2 sizeof = 32

strlen()与Java的String中的length()作用是一样的,而sizeof好像没有对应的方法.

由上面的例子可以看出来,sizeof返回的就是char数组的容量,也就是占用存储空间的大小.

那么基本数据类型可不可以看看它占用存储空间的大小呢?答案是可以的.

int main(void) {
    short  s = 1;
    int    i = 1024;
    long   l = 123456789 ;
    double d = 123456.789;
    long long   ll = 123456789 ;
    long double ld = 123456.789;
    printf("sizeof short : %d\n", sizeof s);
    printf("sizeof int   : %d\n", sizeof i);
    printf("sizeof long  : %d\n", sizeof l);
    printf("sizeof double: %d\n", sizeof d);
    printf("sizeof long long  : %d\n", sizeof ll);
    printf("sizeof long double: %d\n", sizeof ld);
    return 0;
}

运行结果:

sizeof short : 2
sizeof int   : 4
sizeof long  : 4
sizeof double: 8
sizeof long long  : 8
sizeof long double: 16

在我的电脑上,int和long占用的空间是一样的,都是4字节.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值