函数(new)
一、字符串处理函数
1.字符串的输入
(1)scanf()
#include <stdio.h>
int mian()
{
char buf[100]={0};
printf("请输入字符串:");
scanf("%s",buf);
printf("buf=%s\n",buf);
char tmp[100]={0};
printf("请输入字符串:");
scanf("%s",tmp);
printf("tmp=%s\n",tmp);
return 0;
}
(2)gets()
#include <stdio.h>
char *gets(char *s);
#include <stdio.h>
int main()
{
char buf[100];
gets(buf);
printf("but=%s\n",buf);
return 0;
}
(3)fgets()
#include <stdio.h>
char *fgets(char *s,int size,FILE *stream);
#include <Stdio.h>
int main()
{
char but[10];
fgets(buf,sizeof(buf),stdin);
printf("buf=%s\n",buf);
return 0;
}
2.字符串的输出
(1)printf()
(2)puts()
#include <Stdio.h>
int puts(const char *s);
#include <stdio.h>
int main()
{
char buf[]="hello";
puts(buf);
printf("%s",buf);
return 0;
}
(3)fgets()
#include <stdio.h>
int fputs(const char *str,FILE * stream);
#include <stdio.h>
int main()
{
char buf[]="hello";
fputs(buf,stdout);
return 0;
}
3.strlen的使用
#include <Stdio.h>
#include <string.h>
size_t strlen(const char *s);
#include <stdio.h>
#include <string.h>
int main()
{
char buf[]="hello";
int len=strlen(buf);
printf("len=%d\n",len);
printf("sizeof(buf)=%lu\n",sizeof(buf));
char buf2[]="\0hello";
len=strlen(buf2);
printf("len2=%d\n",len)
printf("sizeof(buf2)=%lu\n",sizeof(buf2 ));
char str[100]="mike";
printf("strlen(str)=%lu\n",strlen(str));
printf("strlen(str)=%lu\n",sizeof(str));
}
4.字符串的拷贝
(1)strcpy()
#include <stdio.h>
#include <string.h>
int main()
{
char src[100]="hello mike";
char dst[100];
strcpy(dst,src);
printf("dst=%s\n",dst);
char src2[100]="hello\0 mike";
char dst2[100];
strcpy(dst2,src2);
printf("dst2=%s\n",dst);
return 0;
}
(2)strncpy()
#include <stdio.h>
#include <string.h>
int main()
{
char src[100]="hello\0 mike";
char dst[100];
strcnpy(dst,src,8);
printf("dst=%s\n",dst);
printf("dst=%s\n",)
return 0;
}
(3)数组越界测试
char src[100]="uiuiuiybuiuyfydtvyvub";
char dst[10];
strcpy(dst,src);
5.字符串的比较
比较每个字符的ASCII
(1)strcmp()
#include<string.h>
int strcmp(const char *s1,const char *s2);
#include <stdio.h>
#icnlude <string.h>
int main(int argc,char *argv[])
{
char s1[]="abc";
char s2[]="abcd";
int flag=strcmp(s1,s2);
int flag=strncmp(s1,s2,3)
if(flag>0)
{
printf("[%s]>[%s]\n",s1,s2);
}
else if(flag<0)
{
printf("[%s]<[%s]\n",s1,s2);
}
else
{
printf("[%s]==[%s]\n",s1,s2);
}
}
6.字符串的追加
(1)strcat()
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
char src[]="hello mike";
char dst[100]="abc";
strcat(dst,src);
strncat(dst,src,strlen("hello"));
printf("dst=%s\n",dst;
}
7.sprintf的使用
#include <stdio.h>
int main(int argc,char *argv[])
{
int a=10;
char ch='d';
char buf[]="hello";
printf("a=%d,ch=%c,buf=%s\n",a,ch,buf);
char dst[100];
sprintf(dst,"a=%d,ch=%c,buf=%s\n",a,ch,buf);
printf("@@%s@@",dst);
return 0;
}
8.sscanf()的使用
#include <stdio.h>
int sscanf(const char *str,const char *format,...);
#include <stdio.h>
int main()
{
char buf[]="1 2 3";
int a,b,c;
sscanf(buf,"%d %d %d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
char str1[]="a=1,b=2,c=3";
a=0;
b=0;
c=0;
sscanf(str,"a=%d,b=%d,c=%d",&a,&b,&c);
printf("a1=%d,b1=%d,c1=%d\n",a,b,c);
char str2[]="1,2,3";
a=0;
b=0;
c=0;
sscanf(str,"%d,%d,%d",&a,&b,&c);
printf("a2=%d,b2=%d,c2=%d\n",a,b,c);
char tmp[]="abc mike 250";
char m[10],n[10],k[10];
sscanf(tmp,"%s %s %s",m,n,k);
return 0;
}
9.字符串查询
(1)strchr()用于查询char类型
#include <string.h.>
char *strchr(const char *s,int c);
#include <stdio.h>
#include <string.h>
int main(int argc,int *argv[])
{
char buf[]="acbdefg";
char *p=strchr(buf,'p')
if(p=NULL)
{
printf("查询失败\n")
}
else
{
printf("p=%s\n",p);
}
}
(2)strstr()用于查询string类型
#include <string.h>
char *strstr(const char *haystack,const char *needle);
#include <stdio.h>
#include <string.h>
int main(int argc,int *argv[])
{
char buf[]="abcdefg";
char *p=strstr(buf,"cde")
if(p=NULL)
{
printf("查询失败\n")
}
else
{
printf("p=%s\n",p);
}
}
10.字符串的切割
(1)strtok()
#include<string.h>
char *strtok(char *str,const char *delim);
//功能:来将字符串分割成一个个片段,当strtok()在参数的字符串中发现参数delim中包含的分割字符时,则会将改字符改为0字符,当连续出现多个时只替换第一个为0
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
char buf[]="abc,mike,jiang,250";
char *p=strtok(buf,",")
printf("p=%s\n",p);
printf("buf=%s\n",p);
printf("buf[3]=%d\n",buf[3]);
}
11.atoi()
#include <stdlib.h>
int atoi(const char *nptr);
类似的函数还有:
atof():把一个小数形式的字符串转化为一个浮点数。
atol():把一个字符串转化为long类型。
char str1[]="-10";
int num1=atoi(str1);
printf("num1=%d\n",num1);
char str2[]="0.123";
double num2=atof(str2);
printf("num2=%if\n",num2);
二、函数的分类和作用
1.函数的分类
C程序是由函数组成的,我们写的代码都是由主函数main()开始执行的,函数是C程序的基本模块,是用于完成特定任务的程序代码单元。
从函数的定义角度看,函数可分为系统函数与用户定义函数两种。
(1)系统函数
即为库函数,是编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf().
(2)用户定义函数
用于解决用户的专门需要
三、函数的使用
1.无参无返回值的函数的使用
(1)无参无返回值函数的定义
void fun(void)
{
printf("abc");
int a=10;
int b=20;
printf("a+b=%d\n",a+b);
}
int main(int argc,char *argv[])
{
fun();
}
(2)有参无返回值的函数
void fun1(int a,char ch,char buf[100])
{
printf("a=%d\n",a);
}
int main(int argc,char *argv[])
{
int a=10;
fun1(10);
}
(3)无参有返回值的使用
int fun()
{
return 10;
}
int fun1()
{
int a=11;
int b=20;
return a>b?a:b;
}
int fun3()
{
return 10.11;
}
int main(int argc,chat *argv[])
{
fun()
int a=fun();
printf("a=%d\n",a);
int b;
b=fun();
printf("b=%d\n",b);
printf("tmp=%d\n",fun());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)