vimer linux kernel 爱好者

c语言字符串基础知识

2018-09-24

基本函数

c语言有关字符串的函数很多,每本教材的附录都会有一些库函数,大家可以了解一些。今天,给大家介绍几个常用的。

strcat

strcat(str1, str2): 连接str2到str1中,注意str1的大小能够容下两者。

strlen

strlen(str1),计算str1的长度,不包括结尾’\0’

strcpy

strcpy(str1,str2)将str2复制给str1

puts

这一句是输出字符串,没啥好说的

gets->fgets

这个gets函数不要再使用了,切记,众多的计算机安全问题就是和这个函数有关,相反,使用fgets()函数代替。 众所周知,gets()可以读取一个包含空格的字符串(不限量),这就是他问题的根源所在,不限制的字符读入会造成计算机的栈溢出,导致种种问题。那有同学说了,不用gets那用什么,scanf(“%s”, string_array_name)不符合要求?好,记住,大家以后使用fgets.

下面借助代码具体说一下: 原来的意图是:

	...
	char s[20];
	gets(s);
	puts(s);
	...

现在用的话,使用下面的方法:

	char s[20];
	fgets(s, 20, stdio);
	puts(s);

也就是多了两个参数,20就是你想要读入的字符串的最大值,这样就避免了无限量读入的问题,stdio表示从输入终端读取,就是那个黑色的框框。

puts

puts(str), 输出str.

习题

统计一行字符的单词数目

int main()
{
	char str[100];
	printf("请输入一串字符串,最好英文,以回车键结尾\n");
	fgets(str, 100, stdin);
	int i;
	int nums = 0;
	for(i = 0; str[i] != '\0'; i++)
	{
		if(str[i] != ' ' && str[i+1] == ' ' || str[i+1] == '\0')
			nums++;
	}
	printf("the numbers of words is %d\n", nums);
}

以”I want to C program \0”,以这个例子带进去,就可以测出来。”I”作为一个独立的单词,目前不为” “,但是紧跟着空格,所以单词加1,或者最后一个单词也得加1.


Comments

Content