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字节.