关于字符串的相关问题和解决方法
1.c语言中的字符串比较函数:strcmp(s1, s2)
当s1<s2时,返回为负数;
当s1==s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
2. c语言中的gets()函数与它的代替者fgets()函数
在c语言中读取字符串的方法:
scanf()配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回
gets()函数从标准输入(键盘)读入一行数据,遇到换行符就返回,gets()函数并不读取换行符'\n',它会把换行符替换成空字符'\0',作为c语言字符串结束的标志。但是gets()函数存在缺陷:它不会检查数组是否能够装得下输入行。
替换者:
c11标准新增了gets_s()函数可以替代gets()函数,但是,该函数是stdio.h输入输出函数系类中的可选扩展,因此即使编译器支持c11标准,也有可能不支持gets_s()函数。
我们可以使用fgets()函数来代替gets(),该函数的函数原型声明为:char *fgets(char *buf, int bufsize, FILE *stream);
注意参数bufsize就是限定了读取的字符的个数,这就可以解决gets()函数的缺陷,fgets()函数主要用于读取文件,如果要读取键盘,则stream参数应该为stdin,需要注意的是,如果bufsize设置为n,那么fgets()函数最多读取n-1个字符,即如果在之前遇到了换行符,fgets函数也会返回,还有一点就是fgets函数会读取换行符号,读取结束后会为buf在末尾添加一个空字符作为字符串的结束。
3. 交换两个字符串的函数
void swap(char **p, char **q)//传入指针的地址
{
char *tmp;
tmp = *p;
*p = *q;
*q = tmp;
}

浙公网安备 33010602011771号