字符串函数和计算

字符串计算

1. 输入输出用%s

 char string[8];
 scanf("%7s",string);
 printf("%7s",string);

scanf读入一个单词(读到空格、tab、回车为止)
%7s表明最多只能读7个字符(还有结尾的\0)
%s里面的数字表示最多允许读入的字符的数量,这个数字应该比数组的数字小1个

2. 切记字符串指针要初始化
char *s = “abcdefg”; //这个初始化过程,是将指针cp指向字符串的首地址,而并不是传递字符串的值。

字符型数组的操作要用函数,不能直接赋值

要使用头文件#include <string .h>

1. strlen 返回s的字符串长度(不包括结尾的’\0’)
输入输出用%lu

char line[]="Hello";
printf("strlen=%lu",strlen(line));

2. strcmp(s1,s2) 比较两个字符串,返回一个整数值
说明:比较的过程是最两个字符串自左向右逐个字符按ASCII码比较大小,直到出现不同的字符,第一个不相同的字符比较大小。
0:s1==s2
正数差:s1>s2
负数差:s1<s2
3. strcpy 把字符串复制到字符数组
一般形式:strcpy(字符数组,字符串);
例如:

 char str[20];
 strcpy(str,"C Programming");

常用套路:复制一个新的字符串

char* dst=(char *)malloc(strlen(src)+1);
strcpy(dst,src);

4. strcat 把s2连接到s1的后面接成一个长的字符串,s1必须有足够的空间
一般形式:strcat(字符数组1,字符串);
例如:

 char C[40]="C programming",str[12];
 strcpy(str,"Language");
 strcat(C,str);

完成后C中的内容为:“C Programming Language”

5. 在字符串中找字符:strchr(字符串,某个字符) 自左向右;strrchr(字符串,某个字符) 自右向左,返回的是指针,返回NULL表示没找到。

#include <stdio.h>
#include <string.h>
int main()
{
	char s[]="hello";
	char *p=strchr(s,'l');
	printf("%s",p);
	return 0;
}

输出为:llo (因为返回的是指针,第一个l后面的字符都会出现)
问题:如何找第二个?

#include <stdio.h>
#include <string.h>
int main()
{
	char s[]="hello";
	char *p=strchr(s,'l');
	p=strchr(p+1,'l');
	printf("%s",p);
	return 0;
}

输出为:lo

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char s[]="hello";
	char *p=strchr(s,'l');
	char c=*p;
	*p='\0'
	char *t= (char*)malloc(strlen(s)+1);
	strcpy(t,s);
	printf("%s",t);
	free(t);
	return 0;
}

输出为:he
6. 在字符串中找字符串:strstr(字符串,某个字符串) ;strcasestr(字符串,某个字符),忽略大小写

字符串的读写

1. scanf和printf
scanf读一个内容,读到空格为止,以回车结束。
2. gets和puts
gets读一行内容,能读空格,以回车结束。
3. getchar和putchar
getchar读一个字符,能读空格、回车,以回车结束。
getchar函数:从标准输入读入一个字符,windows按下ctrl+Z会出错返回EOF,结束文件,EOF表示EndOfFile,是一个宏定义,其值为-1。
putchar函数:向标准输出写一个字符,类型是char(每次写一个),返回EOF表示写失败

#include <stdio.h>
int main ()
{
   char c;
 
   printf("请输入字符:");
   c = getchar();
 
   printf("输入的字符:");
   putchar(c);

   return(0);
}

结果:输入345,输出3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值