C语言基础(五)

一、字符串相关函数

  1.gets()(输入字符串)

      格式:gets(字符串);

   (1)区别:gets(str)与scanf(“%s”,str)

      gets(str)允许输入的字符串含有空格

      scanf(“%s”,str)不允许含有空格

  注意:由于以上无法知道字符串大小,很容易导致字符数组越界

  2.fgets()(输入字符串)

    格式:fgets(char *s, int size, FILE *stream)

      s:字符串;

      size:指定最大读取字符的长度(size-1)

      stream:文件指针,如果读键盘输入的字符串,固定写为stdin

    结尾自带"\n".不用担心越界问题

  3.puts()(字符串输出)

    格式:puts(字符串)

    在输出后自动输出一个“\n”

  4.fputs()(字符串输出)

    格式:fputs(constchar * str, FILE * stream)

      s:字符串

      stream:文件指针,如果读键盘输入的字符串,固定写为stdin

    注意:fputs()是puts()的文件操作版本,但fputs()不会自动输出一个'\n'


  5.srelen()(计算指定字符串大小)

    格式:strlen(const char *s);

       s:字符串首地址

  6.strcpy()(把src所指向的字符串复制到dest所指向的空间中,'\0'也会拷贝过去)

    格式strcpy(dest, src)

    dest:目的字符串首地址

         src:源字符首地址

    连接后:

    注意:如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。

  7.strncpy()

     功能:把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符 

        看指定的长度是否包含'\0'。

     格式:strncpy(dest, src, size_t n)

         dest:目的字符串首地址

              src:源字符首地址

              n:指定需要拷贝字符串个数

  8.strcat()

    功能:将src字符串连接到dest的尾部,‘\0’也会追加过去

    格式:strcat(dest, src)

        dest:目的字符串首地址

             src:源字符首地址

  9.strncat()

    功能:将src字符串前n个字符连接到dest的尾部,‘\0’也会追加过去

    格式:strncat(dest, src, size_t n)

        dest:目的字符串首地址

             src:源字符首地址

             n:指定需要追加字符串个数

  10.strcmp()

    功能:比较 s1s2 的大小,比较的是字符ASCII码大小

    格式:strcmp(s1,s2)

      s1:字符串1首地址

           s2:字符串2首地址

  11.strncmp()

    功能:strcmp的追加,比较前n个大小的字符大小,比较的是字符ASCII码大小

    格式:strncmp(s1,s2,n)

 

      s1:字符串1首地址

           s2:字符串2首地址

           n:指定比较字符串的数量

 

  12.sprintf()

   功能:格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 '\0'  为止

   格式:sprintf(str, format, ...)

      str:字符串首地址

           format:字符串格式,用法和printf()一样

  13.sscanf()

   功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据

   格式:sscnf(strformat, ...)

      str:指定的字符串首地址

           format:字符串格式,用法和scanf()一样

  14.strchr()

    功能:在字符串s中查找字母c出现的位置

    格式:strchr(s, int c)

      s:字符串首地址

           c:匹配字母(字符)

  15.strstr()

    功能:查找在字符串riunv中找llunk出现的位置

    格式:strstr(riunv,link)

  16.strtok()

    功能:来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现

       参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连

          出现多个时只替换第一个为\0。

    格式:strtok(str, delim)

       str:指向欲分割的字符串

            delim:为分割字符串中包含的所有字符

注意: 在第一次调用时:strtok()必需给予参数s字符串

    往后的调用则将参数s设置成NULL,每次调用成功则返回指向被分割出片段的指针

  17.atoi()

    功能:atoi()会扫描nptr字符串,跳过前面的空格字符,

       直到遇到数字或正负号才开始做转换,而遇到

       非数字或字符串结束符('\0')才结束转换,并将结果返回返回值。

    格式:atoi(nptr);

          nptr:待转换的字符串

  拓展(与atoi类似的)

    1.atof():把一个小数形式的字符串转化为一个浮点数。

    2.atol():将一个字符串转化为long类型

一、函数

 1.函数的定义

  返回类型 函数名(形式参数列表)

         {

                数据定义部分;

                执行语句部分;

    }

 2.函数名

   可以随意取,但最好见名知意

注意:函数名的后面有个圆换号(),代表这个为函数,不是普通的变量名。

 3.形参列表

  在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此称它们是形式参数或虚拟参数,简称形参,表示它们并不是实际存在的数据,所以,形参里的变量不能赋值。

  定义:类型+变量的形式

 4.函数体

  函数功能实现的过程

 5.返回值

  函数的返回值是通过函数中的return语句获得

注意:如果函数返回的类型和return语句中表达式的值必须一致,程序则会报错。

  

课后作业

  

思考任务(课后练习)

 

1、设计一个计算器,可以进行加、减、乘、除运算,类型全部都是int即可

        要求从键盘输入指令及操作数,如:

        add 15 25        //计算15+25的值,并返回结果

        sub 25 15        //计算25-15的值,并返回结果

        mux 3 5           //计算 3*5的值, 并返回结果

        dive 25 5        //计算25/5的值,并返回结果

 

提示:1) 需要封装函数

          2) scanf("%s %d %d", name, a, b);

 

2、不用使用库函数,编写一个函数my_strcmp(),功能和strcmp()一样,实现字符串大小比较:

int my_strcmp(char s1[], char s2[]);

int main()

{

        char s1[] = "hello world";

        char s2[] = "hello abc";

        int flag = my_strcmp(s1, s2);

        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);

        }

        return 0;

}

 

 

 

答案

1.

#include<stdio.h>

#include<string.h>

int main()
{
  int a=0,b=0;
  char name[5];
  char s2[5]="add";
  char s3[5] = "sub";
  char s4[5] = "mux";
  char s5[5] = "dive";
  printf("请输入加add,减sub,乘mux,除dive\n");
  gets(name);
  printf("请输入两个数:\n");
  scanf("%d %d", &a, &b);
  if (strcmp(name, s2) == 0)
  {
    printf("%d", a + b);
  }
  else
  if (strcmp(name, s3) == 0)
  {
    printf("%d", a - b);
  }
  else
  if (strcmp(name, s4) == 0)
  {
    printf("%d", a*b);
  }
  else
  if (strcmp(name, s5) == 0)
  {
    printf("%d", a/b);
  }
  else
  {
    printf("输入出错");
  }
  return 0;
}

 

2.

#include<stdio.h>

#include<string.h>

int my_strcmp(char s1[], char s2[])
{
  int i;
  i = strcmp(s1, s2);
  return i;
}
int main()
{
  int flag;
  char s1[] = "hello world";
  char s2[] = "hello abc";
  flag = my_strcmp(s1, s2);
  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);
  }
  return 0;
}

 

 

 

   

  

转载于:https://www.cnblogs.com/Riunv/p/10693427.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新服务器安装和配置zabbix的playbook

公司的金山区云服务器是由我负责的&#xff0c;每一次新购买了金山区的服务器都要把这些新服务器添加到zabbix监控里&#xff0c;于是我就编写了一个ansible的playbook&#xff0c;这样以后就可以在执行playbook的时候“带薪拉屎”了。 ansible主机准备&#xff1a; 1&#xff…

15个变态的Google面试题以及答案

在当前经济形势不景气的情况下&#xff0c;谷歌招聘新员工是一件令人振奋的事&#xff0c;特别是对那些在当前金融风暴中渴望找到安全港的年轻经理们和软件开发商们来说是个好消息。   不过&#xff0c;也不要高兴太早&#xff0c;谷歌在招聘新员工时&#xff0c;更加青睐名牌…

小程序禁用ios 左右滑动_如何在使用应用程序时禁用iOS控制中心

小程序禁用ios 左右滑动The Control Center has proven to be a thoughtful and welcome addition to iOS, but it can be annoying sometimes if you’re playing a game or using an app, and you accidentally open it. Here’s how you can disable it in such situations.…

repomd.xml错误14 not found

用Centos7最小化安装了系统&#xff0c;想练练手&#xff0c;可以到换了“搜狐”的YUM源&#xff0c;系统总报错更新错误说找不到repomd.xml。 然后就一直搜解决问题&#xff0c;能用到的都用到了&#xff0c;网上提到的都用到了。浪费了好几个小时没解决。正当无语的时候&…

浅谈javascript递归(白话版)

递归 递归是一种解决问题的方法&#xff0c;通常我们可以理解成函数调用自身&#xff1b; 什么递归&#xff1f;递归怎么写&#xff1f; 首先直接调用自身的方法和函数&#xff0c;他是一个递归&#xff0c;我们看代码&#xff1a; 复制代码 var recursiveFun function(params…

超链接禁用_如何在Microsoft Word中禁用超链接

超链接禁用When you type a web or email address in Word, you may notice that the program automatically formats it as a live hyperlink. This is a setting in Word’s AutoFormat feature that is on by default but can be easily turned off. 当您在Word中键入网站或…

ssh面试题总结

题目1&#xff1a;Hibernate工作原理及为什么要用&#xff1f; 原理&#xff1a; hibernate&#xff0c;通过对jdbc进行封装&#xff0c;对 java类和 关系数据库进行mapping&#xff0c;实现了对关系数据库的面向对象方式的操作&#xff0c;改变了传统的jdbc sql操作数据的方式…

SaltStack的salt-ssh使用及LAMP状态设计部署

SaltStack的salt-ssh使用及LAMP状态设计部署 1、salt-ssh的使用 官方文档&#xff1a;https://docs.saltstack.com/en/2016.11/topics/ssh/index.html &#xff08;1&#xff09;安装salt-ssh [rootlinux-node1 ~]# yum install -y salt-ssh&#xff08;2&#xff09;配置salt-…

程序员笔记(知识)管理的一点经验

记笔记这件事&#xff0c;也许在很多人看来&#xff0c;再普通、简单不过了——从小老师就教育我们要这么做。不同的人有不同的方式&#xff0c;我们最终的目的&#xff0c;还是希望不要停留在只是记录这一层面上&#xff0c;而是将它们转变为我们的知识。作为一个程序员&#…

xbox可以录视频声音吗_什么是Xbox Live Gold,它值得吗?

xbox可以录视频声音吗If you have an Xbox One or Xbox 360, Microsoft’s Xbox Live Gold service is required to play multiplayer games online. A subscription costs $10 per month or $60 per year. Xbox Live Gold also includes additional benefits, like free games…

windows - mysql

Windows:(mysql)操作:0.下载安装mysql www.mysql.org downloads community 5.7.21 下载5.6 Microsoft Windows 解压到C: C:\mysql-5.6.39-winx64 C:\mysql-5.6.39-winx64\bin bin/mysql 客户端 bin/mysqld 服务端 设置环境变量: …

显示器选三星还是飞利浦_如何为飞利浦色相灯设置计时器

显示器选三星还是飞利浦Maybe you want to turn off your Philips Hue lights after a certain amount of time has passed, or have them blink as a reminder. Whatever your needs, here’s how to set a timer for your Philips Hue lights to have them automatically tur…

PIE SDK与OpenCV结合说明文档

1.功能简介 OpenCV是基于BSD许可&#xff08;开源&#xff09;发行的跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Ruby、MATLAB等语言的接口&…

js的栈堆与浅拷贝、深拷贝的理解

一&#xff1a;什么是堆栈&#xff1f; 我们都知道&#xff1a;在计算机领域中&#xff0c;堆栈是两种数据结构&#xff0c;它们只能在一端(称为栈顶(top))对数据项进行插入和删除。 堆&#xff1a;队列优先,先进先出&#xff1b;由操作系统自动分配释放 &#xff0c;存放函数的…

python面向对象基础语言进阶

在此感谢前辈们的指导&#xff1a;http://python.jobbole.com/80955/ https://www.cnblogs.com/wupeiqi/p/4766801.htmlhttps://www.cnblogs.com/paomaliuju/p/5122761.html https://www.cnblogs.com/goser/articles/7097728.html http://www.cnblogs.com/alex3714/articles/52…

ea 备份码是什么_EA的原始访问是什么,值得吗?

ea 备份码是什么EA’s Origin Access gives you access to more than 70 games, discounts, and new EA games before they’re released for a monthly (or yearly) subscription fee. But is it really worth it? EA的Origin Access可让您访问70多种游戏&#xff0c;打折游戏…

Https 加密原理分析

众所周知&#xff0c;HTTP 协议通过明文传输&#xff0c;是不安全的。于是&#xff0c;就在 HTTP 协议的基础上&#xff0c;进行了数据加密&#xff0c;也就诞生了 HTTPS 协议。注意&#xff0c;HTTPS 并不是一个新的协议&#xff0c;它只不过是在 HTTP 的基础上加了一层 TLS (…

JS框架_(JQuery.js)纯css3进度条动画

百度云盘  传送门  密码&#xff1a;wirc 进度条动画效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加热点快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手机上的便携式Wi-Fi热点很棒&…

提高关键词排名的28个SEO技巧

28个让关键词排名明显改观的SEO技巧&#xff1a; 关键词位置、密度、处理 URL中出现关键词&#xff08;英文&#xff09; 网页标题中出现关键词&#xff08;1-3个&#xff09; 关键词标签中出现关键词&#xff08;1-3个&#xff09; 描述标签中出现关键词&#xff08;主关键…