1>gets()和puts()//字符串的键盘读取和屏幕输出
gets()用于字符串的读取,使用行缓冲,从键盘输入一段字符并按下回车键时,开始从键盘缓冲区读取,并丢弃换行符\n,自动添加空字符\0.gets()的缺点是当输入的字符数超过了用来存放的字符型数组的大小,就会溢出到相邻的内存中。
puts()用于字符串的屏幕输出,并于结尾自动添加换行符\n.
2>strcat()
strcat(s1,s2)字符串s2中的内容添加到字符串s1的结尾,返回指向s1的指针。示例:
#include<stdio.h>
#include<string.h>//声明strcat()函数
int main(void)
{
char ch[]={"Welcom t"};
char * p="o China!";
strcat(ch,p);
puts(ch);
return 0;
}
输出:Welcome to China!
3>strncat()
strncat(s1,s2,n)是strcat(s1,s2)的安全版本,n用于控制复制添加的字符数量,添加字符满n个或遇到s2中的结尾空字符\0时结束添加。示例:
#include<stdio.h>
#include<string.h>//声明strncat()函数
int main(void)
{
char ch[20]={"one two three"};
char * p=" four five six";
strncat(ch,p,7);
puts(ch);
return 0;
}
输出: one two three four f
4>strcmp()
strcmp(s1,s2)比较两个字符串s1、s2的内容是否相同,关于返回值:
c中:
当s1<s2时,返回值= -1
当s1==s2时,返回值= 0
当s1>s2时,返回值 = 1
c++ 中:
当s1<s2时,返回值小于0
当s1==s2时,返回值等于0
当s1>s2时,返回值 大于0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
代码示例:
#include<stdio.h>
#include<string.h>//声明strcmp()函数
#define ANSWER "apple"//设置标准答案
int main(void)
{
char ch[20]={0};
puts("请输入苹果的英文单词:");
gets(ch);
while(strcmp(ANSWER,ch)!=0)//对比输入和标准答案
{
puts("错误!请重新输入:");
gets(ch);
}
puts("完全正确!");
return 0;
}
5>strncmp()
strncmp(s1,s2,n)是strcmp(s1,s2)的加强版,用于比较字符串s1、s2的前n个字符。代码示例:
#include<stdio.h>
#include<string.h>//声明strncmp函数
#include<stdlib.h>
#define SIZE 5
int main(void)
{
char ch[5][9] = { "ability","absent","abandon","addtion","apple" };
int count = 0;
puts("所以这里面ab开头的单词有:");
for (int i = 0; i<SIZE; i++)
{
if (strncmp(ch[i], "ab", 2) == 0)
{
printf("%s ", ch[i]);
count++;
}
}
printf("共%d个!\n", count);
system("pause");
return 0;
}
例如strcpy(s1,s2)的作用是把字符串s2的内容全部存入s1中,strcpy(s1+5,s2)则是,字符串s1中的前5个字符不动,从其第六个字符开始全部丢弃,其位置用于存放字符串s1的内容。其实参数s1和s2的性质是指针,分别指向字符串s1和s2的第一个字符位置。并且如果s2的长度大于s1,当s1中的位置满了之后,s2中的剩余内容会溢到相邻的内存中,由于s2全部复制到s1之后,会在s1的末尾添加空字符结尾,所以打印s1看起来会没一点问题,尽管此时s1的实际长度已经改变。但这种情况可能会导致原来s1的相邻内存的信息被覆盖,因此存在隐患。
7> strncpy()
是strcpy()的安全版本,多了一个参数来控制复制的字符个数。例如strncpy(s1,s2,n)表示把字符串s2的前n个字符存放到s1中。
例如strchr(s1,int c)返回字符c在字符串s1中第一次出现的位置指针。
9>strlen()
strlen()的作用是测量字符串的长度,不含结尾符\0,参数可以是字符串名、字符串数组名、指针,它的工作原理是计算从开始到遇到第一个'\0'位置的字符数。