几个好用的函数:
#include<string.h>
1.strlen
求字符串长度好计数用
直接得出字符串长度
2.strcpy
内容拷贝
把\0也拷贝进去(相当于提前\0)
对传入内容后的数组进行打印或求字符串长度时遇到\0都会停止,相当于操作原数组的效果
注意:目标空间必须足够大,以确保能完整存放原字符‘
目标字符串
后者内容传入前者相应位置
3.strcat
把后者指向的内容复制到前者内容的后面
删除原来的\0
保证目标空间足够大
不可以自己替自己
4.strcmp
比较大小
若<返回负数
=返回0
>返回+
5.puts
只能操作字符串
输出并换行(ch+\n)
可以将字符串直接写入puts
6.gets
把读到的字符串写入数组
scanf读到空格就停止
gets读到回车才停止,处理可能含空格的字符串更好用
实操:
1.统计单词数
思路:用strlen求出总长度(看结尾\0),通过空格判断单词个数得以实现
#include "stdio.h"
#include "string.h"
int main(){
char a[100];
gets(a);
int m,i,j;
m=strlen(a);
if(a[0]==' ')j=0;
else j=1;
for(i=0;i<m-1;i++){
if(a[i]==' '&&a[i+1]!=' ')
j++;
}
printf("%d\n",j);
return 0;
}
非特殊情况计数器起始为1
2.用strlen实现求字符串长度
思路:先用gets输入可能含空格的字符串然后用strlen求字符串长度
注意:char a[100]
#include "stdio.h"
#include "string.h"
int main(){
char s[100];
gets(s);
int l=strlen(s);
printf("%d",l);
return 0;
}
3.指针实现字符串值的交换:用指针的指针做(取指针的地址)
#include "stdio.h"
void swap(char **p,char **q){
char *i=*p;
*p=*q;
*q=i;
}
int main(){
char a[50],b[50];
char *str1=a,*str2=b;
gets(a);
gets(b);
swap(&str1,&str2);
puts(str1);
puts(str2);
return 0;
}
4.字符串替换
编写程序,将字符串中的所有大写英文字母按以下对应规则替换,其余类型的字符不替换:
原字母: ABCD……XYZ
替换后字母:ZYXW……CBA
输入:在一行中输入一个不超过99个字符、并以回车结束的字符串。
输出:在一行中输出替换完成后的字符串。
注意:在一类字符中进行的操作就通过一类字符的运算
#include "stdio.h"
int main(){
char a[100];
gets(a);
char *p=a;
while(*p!='\0'){
if(*p>='A'&&*p<='Z')
printf("%c",'A'+'Z'-*p);
else printf("%c",*p);
p++;
}
return 0;
}