C语言中函数操作

函数的使用:降低代码重复率,
程序模块化有利于修改完善阅读

标准输出:
printf(“%c” ‘a’);碰到结束符\0结束输出

              puts("abc");标准输出字符串,输入完成自动输出换行结束
                            char str=puts("abcde");
                             printf("%s\n", &str);
               fputs(*str,*stream) 从str指定字符串写入stream指定文件夹,结束不加‘\0’;输出屏幕固定为stdout;
                             char *str="abcds" ;
                             fputs(str,stdout);

标准输入 :
getchar();从标准输入设备读取一个值到变量中,以空格回车键结束输入;
int num=getchar();
scanf("%u",5);通过转义符得到用户标准设备读取的值输入到变量中,以空格回车键结束输入;
int nums;
scanf("%d",&nums);
printf(“nums=%d”,nums);
//通过正则表达式可以获取带空格的字符串:scanf("%[^\n]",nums);
gets();从输入设备读取字符串遇到回车结束或尾部结束,由于读取不知道字符串大小容易数组越界溢出;
char str[20];
gets(str); //输入完成自动包含字符‘\0’结束符
printf("%s\n",str);
fgets(int*,sizeof(),file); 从stream指定文件内读取字符,保存到(int)指定的空间中,键盘输入固定写为stdin;
int nums[10];
fgets(nums,sizeof(nums),stdin); //(数组指针,数组长度,从哪里输入)输入完成自动包含换行,不含结束符
printf(“nums=%s\n”,nums);

  字符串函数:
                   strcpy(a,b):把b指向的字符串复制到a指向的空间,包含结束符\0;
                             char a[10]="abcd";  //a空间不够大会造成缓冲溢出
                             char  b[]="efg";
                             strcpy(a,b);
                             printf("%s",a);
                             
                     strncpy(a,b,n);把指向b的字符串前n个字符复制到a中,指定长度不包含结束符;

                     strcat(a,b);把b的字符串连接到a的尾部包含结束符\0;a空间不够大数据会溢出;

                     strncat(a,b,n);把b的前n个字符串连接到a的尾部包含结束符\0;a空间不够大数据会溢出;
                     
                     strcmp(a,b);比较a和b的ASCII码值大小,相等返回0,大于返回ASCII码值;
                              char* a="abcde";
                              char* b="abdcf";
                              if(strcmp(a,b)==0){printf("a=b");}
                              else if(strcmp(a,b)>0){printf("a>b");}
                              else{printf("a<b");}
                     strncmp(a,b);比较a和b的前n个ASCII码值大小,相等返回0,大于返回ASCII码值;
                     
                     sprintf(a,b);格式化数据输出,碰到结束符\0结束;
                               int n=5;
                               char a[30]={0};
                               char b[]="abc def";
                               int len=sprintf(a,"n=%d,b=%s",n,b);//把n和b的值传入a数组中和标准输出用法相同;
                               printf("%s\n", a);
                               printf("len = %d\n", len);
                               
                        sscanf(a,b);格式化输入,用法和标准输入相同;
                                char a[] = "5+6=12";  int b; int c; int d;
                                scanf("%d+%d=%d", &b, &c, &d);
                             	sscanf(a, "%d+%d=%d", &b, &c,&d);//a=b+c;
                                 printf("%s", a);
                         strchar(str1,str2):查找字符串中str2字符串出现在str1的首次位置

                         strstr(str1,str2):判断str2是否是str1的子串,返回首次出现str2的位置不包含\0终止符;
                            char* str1="ascedkhabcaijabcop";
                            char* str2="abc";
                            int n=0;
                            while((str1=strstr(str,str2))!=NULL)
                            {
                                 str1=str1+strlen(str2);
                                 n++;
                                 if(*str1==0){break;}
                            }
                            printf("str2出现的次数为:%d\n",n);
                 
                        strtok(a,"$");分隔符拆分对象必须可读可写,按照既定参数拆分,只替换a中出现的第一个$出现的为\0;
                        
                        atio:字符串转整数                         //转换必须是数组值类型的可转
                        atof:字符串转浮点数                     //float atof(const char *nums);
                        atol:字符串转长整数
                          
                           
  字符串求长度:
                   sezeof(); 求变量的长度
                   strlen();   求变量长度遇到\0自动结束的位置
                               char str[]="abc de\0f";
                               int index=strlen(str);
                               printf("%d", index);
                               
   内层操作函数:
                   menset(*a,int b,sizeof(n));  b的范围是0~255,填充的字符是unsigned char;字符b以n个写入数组a;
                   memcpy(*a,*b,n);拷贝*b空间的前n个字节到*a所值的内存地址上;ab所指向内存空间不能重叠;
                   memove(*a,*b,n);同上,内存空间可以重叠,效率低;
                   memcmp(*a,*b,n);a,b空间前n个字节
                   
   随机函数: 
                    void  rand(unsigned int seed);  设置产生随机数是的时间种子,头文件为系统include<stdlib.h>
                     time_t  time(time_t *t);   获取当前系统时间,头文件为include<time.h>
                     int rand(void); 返回值为随机数;
                           time_t  Tm=time(NULL);
                           srand((unsigned int)tm);
                           int nums=rand();
                           printf("nums=%d\n",nums);
                           return 0;
                          srand((unsigned)time(NULL))%10;
   结束函数: 
                     exit();退出当前程序
                     return();结束本函数返回返回值;
 多文件编程:格式一般为:
                            #ifndef  __HEAD_H__
                            #define __HEAD_H__
                            .............头文件
                            #endif
                            
 c语言中没有字符串类型,普通字符数组没有0或'\0'结束符,字符串数组以0或‘\0’结束;’
 int  main(int argc,char *argv[])   //main函数固定格式,argc标明数组成员数量,argv数组每个成员都是char*类型;
 自定义函数:
                  自定义函数由函数声明 ,函数定义,函数调用组成;
                     函数声明:声明函数原型;
                                        int  std(int*,int*);
                     函数定义:函数定义类型+函数名+形参列表+函数体实现+返回值 ;
                                        int std(int* a, int* b) //形参值传值操作函数调用结束会自动释放,一般使用传址(指针)处理数据;
                                        {    
                                        int temp;            //定义临时置空值
                                        temp=*a;            //函数实现交换*a和*b
                                        *a=*b;
                                        *b=temp;
                                        return 0;             //返回定义的int类型值0程序正常结束。返回类型不能是函数体内临时变量,函数体结束会自动释放;
                                         }              
                        函数调用:定义实参,把实参传入函数形参对应位置完成调用;
                                         int main()
                                         {
                                         int num1=59;
                                         int num2=99;
                                         int* a=&num1;
                                         int* b=&num2;
                                         std(a,b);
                                         printf("num1=%d,num2=%d",num1,num2);
                                         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值