1.在C语言中函数strlen获取字符串的长度——该函数的头文件为<string.h>
strlen函数和sizeof函数的区别:strlen函数给出的是字符串的长度,你输入多少字符就是多少,并且不会加上空字符(‘\n’),而sizeof函数给出的是整个数组的长度
例:
#include<stdio.h>
#include<string.h> //函数strlen的头文件
#define N " you jump,I jump!" //在字符串中非空格字符前由5个空格字符
int main(void)
{
char name[20]={" hello world!"}; //在这个字符串中最开始有个空格字符
char lose[20];
scanf("%s",lose);
printf("%d %d\n",sizeof(name),strlen(name)); //比较两个字符串在两个函数的输出值的不同
printf("%d %d\n",sizeof(N),strlen(N));
printf("%s\n",name); //对比输出的字符串的格式的不同
printf("%s\n",N);
printf("%s\n",lose);
return 0;
}
最后的输出结果为:
注:在这里,scanf会跳过读取的空格字符,就如输入"I am MT!",但最后输出的结果前却没有空格,这是scanf函数读取时跳过了前面的空格字符。对比完图中结果,对strlen函数和sizeof函数的不同有些具体的印象了
如果你还是没有懂,也可以这么说,在格式控制字符串中。像"%d,%d"这样的,scanf()在读取第一个数字之后,就会丢掉逗号,开始读取下一个数字。而格式控制字符串中的空格(包括space、Tap、Enter)也是一样被scanf()丢弃,
2.字符串都是存储在char类型的数组中的,数组由连续的存储单元组成,每个单元存储一个字节。
在字符串的结尾,还有一个被隐藏的空字符( ‘\0’ ,null character),它被用来标识字符串的结束
3.scanf函数在读取输入的时候,除了转换说明为%c有些特殊外,都会跳过输入的空格字符,读取第一个非空格字符
scanf函数在读取第一个非空格字符后,直到读到空格字符(包括Tap、enter)就会认为字符串到此结束,这也使一个%s只能读取字符串中的一个单词,但不会读取一整句
scanf函数的转换说明为%c的时候,若%c前没有空格,从输入的第一个字符开始读取;若%c前有空格,则跳过输入的空格字符,从第一个非空格字符开始读取
4.格式字符串中转换说明的格式就是输入输出的格式,如在两个转换说明的中间加上一个空格字符或一个逗号,输入输出的格式也会是这样
例:
#include<stdio.h>
int main(void)
{
char name[20];
char moon[20];
scanf("%s",name);
scanf("%s",moon);
printf("%s %s\n",name,moon); //格式字符串中的空白代表着跳过下一个输入项前所有的空白
printf("%s %s\n",name,moon);
printf("%s,%s\n",name,moon);
return 0;
}