第三章,函数
字符串函数
//strcmp
  int my_strcmp(char *str1,char *str2)
  {
     while(*str1 = = *str2)
     /*不可用while(*str1++= =*str2++)来比较,当不相等时仍会执行一次++,
      return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/
     {
        if(*str1 = = '\0')
        {
            return 0;
        }
        str1++;
        str2++;
      }
        if(*str1>*str2)
     {return 1;}
    else
     {return -1;}
  }
 
int my_strcmp(char *sour,char *des)
{
     int ret=0;
     while(!(ret=*sour-*des)&&*des) //这里的*dest判断很重要,否则二者完全相等的时候就会越界出现难以判断的情况  
    {    des++;
         sour++; }
     if(ret<0)
    {   ret=-1; }
     else if (ret>0)
    {   ret=1; }
     return ret;
}
其他的字符串函数类似,都可以写出来。
 
 
分析下列程序
  void swap(char *p1,char *p2)
  {
          char tmp=0;
         tmp=*p1;
         *p1=*p2;
         *p2=tmp;
  }
   char *func(char *str,int n)
  {
     char *s1=str;
     char *p1=str;
     char *p2=str;
     int len=strlen(str);
     while(*p1!=*(p2+len-1-n))
    {
         p1++;
    }
     for(;p1-s1>0;s1++,p1--)
    {
         swap(s1,p1);
    }
     char *s2=p2+len-n;
     char *p3=p2+len-1;
     for(;p3-s2>0;p3--,s2++)
    {
         swap(p3,s2);
    }
    
     char *ss=str;
     char *ss1=str;
     char *sw=ss+len-1;
     for(;sw-ss1>0;sw--,ss1++)
    {
         swap(sw,ss1);
    }
 
     return str;
}
int main()
{
     char str[]="helloworld" ;
     int n=3;
    printf( "%s",func(str,n));
     return 0;
}
 
 
 
itoa;
将整型数据转化为字符
如,将12345转化为“12345”
 
分析如下,利用求余运算符将个位往上一个一个求出来,然后用字符数组把它保存起来。
遇到的问题
首先得新开一个数组,数组的大小用len来控制,len的大小为整数的位数,
如果整数中有零的话,直接把字符‘0’赋值给对应的位置。

void itoa()
{
     int a=10;
     int b=0;
     int len=0;
    b=a;
     while(a!=0)
    { if(a%10==0)
         { len++;   }
      else
         { len++;    }
         a=a/10;
    }
     char *str=(char *)malloc(sizeof( char)*(len));
     for(int i=len-1;i>=0;i--)
    { if(b%10==0)
         {   str[i]= '0';   }
         str[i]=b%10+ '0';
         b=b/10;
    }
         printf( "%s\n",str);
         free (str);
}
深入
如果开头有-号
则在开辟空间的时候,得多开辟一个存放符号的位置,即len+1
如果没有-号,就不开辟。

c语言学习笔记三的更多相关文章

  1. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

  2. 【GO】GO语言学习笔记三

    7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: ...

  3. Go语言学习笔记(三) [控制结构、内建函数]

    日期:2014年7月21日   一.控制结构   1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...

  4. [C语言学习笔记三]格式化输出和输入

    使用 printf 函数来输出,使用 scanf 函数来输入 在 printf 函数中使用变量,需要使用占位符代替. int 型一般存储整数,使用 %d 代替 long long int 型一般存储长 ...

  5. JavaScript--基于对象的脚本语言学习笔记(三)

    事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv=&q ...

  6. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  7. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  8. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  9. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

随机推荐

  1. 利用django创建一个投票网站(四)

    创建你的第一个 Django 项目, 第四部分 这一篇从第三部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码. 编写一个简单的表单 让我们更新一下在上一个 ...

  2. sift特征

    已经有很多博客已经将sift特征提取算法解释的很清楚了,我只是记录一些我不明白的地方,并且记录几个理解sift特征比较好的博客. 1. http://aishack.in/tutorials/sift ...

  3. 【转】[Intel/Nvidia]Ubuntu 16.04 LTS Intel/Nvidia双显卡切换

    1.在Unity中搜索 "Additional Drivers" 2.打开并选择以下选项 3.打开终端并输入 sudo apt-get install nvidia-361 4.安 ...

  4. C#可用的日出日落时间类

    一个现成代码的公共类库,复制下来作为一个类文件就可以调用了.一般不需要了解实现过程,各种数学公式太麻烦. 调用方法: SunTimeResult result = SunTimes.GetSunTim ...

  5. 记一次WinForm中屏蔽空格键对按钮的作用

    事件的起因是在做一个项目功能时,添加快捷键关闭声音,这个键最终选择了空格键,但是当按下空格键时,会把窗体中获取焦点的控件(比如按钮,文本框等)的单击事件触发,所以要屏蔽这个现象. 开始使用各种方法,在 ...

  6. 获取exr图片上像素点的颜色通道

    google了好久,都没找到合适的方法,还是自己撸一串吧. import OpenEXR, Imath, array def get_channel(exr_file,pixel_pos,channe ...

  7. 《web全栈工程师的自我修养》读书笔记

    有幸读了yuguo<web全栈工程师的自我修养>,颇有收获,故在此对读到的内容加以整理,方便指导,同时再回顾一遍书中的内容. 概览 整本书叙述的是作者的成长经历,通过经验的分享,给新人或者 ...

  8. 魅族MX2去除smartbar教程

    首先确认一点,魅族Smartbar的推出,是敢于创新,大胆向前的做法.在软件兼容的情况下,Smartbar确实提高单手操作的便利,而且和flymeOS整体性融合度比较好. 但是,往往事与愿违,现实中众 ...

  9. SpringMvc核心流程以及入门案例的搭建

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  10. Yii2 assets注册的css样式文件没有加载

    准备引入layui.css文件的,在LayuiAssets类中已经配置了资源属性 <?php namespace frontend\assets; use yii\web\AssetBundle ...