文章目录

  • 一、表示字符串和字符串I/O
    • 1.在程序中定义字符串
      • 1.字符串字面量(字符串常量)
      • 2.字符串数组和初始化
      • 3.数组和指针
  • 二、字符串输入
  • 三、字符串输出
  • 四、自定义输出/输入函数
  • 五、字符串函数
  • 六、选择排序算法
  • 八、命令行参数
  • 九、把字符串转换为数字

一、表示字符串和字符串I/O

1.在程序中定义字符串

1.字符串字面量(字符串常量)

用双引号括起来的内容称为字符串常量。

2.字符串数组和初始化

c99之后有着变长数组的概念,即char crumbs[n];

3.数组和指针

  • 联系:1.两者都可以使用数组表示法。2. 两者都可以进行指针加法操作
  • 区别:假设有下面两个声明:
char heart[] = "I love you!";
const char *head = "I love you!";

1.只有指针表示法可以进行递增操作。2.可以这样head = heart;,但是不能heart = head;。3.初始化数组把静态存储区的字符串拷贝在数组中,而初始化指针只把字符串的地址拷贝到指针。

二、字符串输入

  1. gets()函数
    有着安全隐患,已经逐渐要被淘汰掉
  2. fgets()函数
    会保留输入末尾的换行符作为字符串的一部分,要编写额外的代码,来将换行符替换成空字符。
  3. gets_s()函数
    只从标准输入中读取字符,所以不需要第3个参数,如果读到换行符会将其丢弃,而不是存储。
    鉴于此,fgets()通常是处理类似情况的最佳选择。
  4. scanf()函数
    scanf()和gets()类似,也存在一些潜在的缺点。如果输入行的内容过长的话,scanf()也会导致数据溢出。不过,在%s转换说明中使用字段宽度可防止溢出。

三、字符串输出

  1. puts()函数
    该函数遇到空字符时就停止输出,所以必须确保有空字符。
  2. fputs()函数
    要注意puts()和gets()配套使用,fputs()和fgrts()配套使用。
  3. printf()函数
    形式更为复杂,计算机执行时间也更长

四、自定义输出/输入函数

可以自定义一个满足自己需求的函数。

//put1.c
#include<stdio.h>
void put1(const char * string){while(*string != '0')putchar(*string++);
}

五、字符串函数

  1. strlen()函数:strlen()函数用于统计字符串的长度。
  2. strcat()函数:用于拼接两个字符串
  3. strncat()函数:该函数的第三个参数指定了最大添加字符数。如strncat(bugs,addon,13)
  4. strcmp()函数:用于字符串比较,其返回值有正、负和0,取决于字符串在ASCLL中的位置。
  5. strncmp()函数:可以只比较第三个参数指定的字符数。
  6. strcpy()函数:拷贝字符串
  7. strncpy()函数:第三个参数指定可拷贝的最大字符数。
  8. sprintf()函数:此函数声明在stdio.h中,而不是string.h

六、选择排序算法

利用选择排序算法来排序指针,具体做法是利用for循环依次把每个元素与首元素比较。如果待比较的元素在当前首元素的前面,则交换两者。重复这一过程直到倒数第二个元素为止。现在只剩下两个元素比较这两个元素,将较大的元素放在倒数第二的位置。这样,数组中最小元素就出现在最后的位置上。

八、命令行参数

  1. DOS或者UNIX都是使用命令行编译程序,因此在同一行中可以自己加参数。
  2. 集中开发环境中(IDE),可以使用可运行命令行的编译器,如GCC之类。

九、把字符串转换为数字

需要用的函数:

atoi();
strtol();

重读《C primer plus》(十一)相关推荐

  1. C++primer第十一章 关联容器 11.3关联容器操作 11.4 无序容器

    11.3关联容器操作 除了表9.2(第295页)中列出的类型,关联容器还定义了表11.3中列出的类型.这些类型表示容器关键字和值的类型. 对于set类型,key_type和value type是一样的 ...

  2. C++primer第十一章 关联容器 11.1使用关联容器 11.2 关联容器概述

    关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的.与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 虽然关联容器的很多行为与顺序容器相同,但其不同之处反映 ...

  3. C++Primer第五版——习题答案+详解(完整版)

     C++Primer第五版--习题答案详解 新手入门必看的书.知识是一个系统化并且相互关联的体系,零散的东西每天收获如果不形成自己的体系的话,那将是毫无意义的,所以我觉得有必要将这本书先啃一遍,消化其 ...

  4. C++ Primer读书摘要(二)

    C++ Primer 第八章 标准IO库 学习本章内容之前有必要对缓冲区的概念做一个基本了解,我引用了网上一片文章<C++编程对缓冲区的理解>,内容如下: 什么是缓冲区    缓冲区又称为 ...

  5. C primer plus(第六版)第十一章源代码

    C primer plus(第六版)第十一章源代码 /* 11.1 */ #include<stdio.h> #define MSG "I am a symbolic strin ...

  6. 【c++primer第五版】第十一章习题答案

    第十一章 关联容器 练习11.1 描述map和vector的不同. 解: 顺序容器中的元素是"顺序"存储的,对于vector,元素在其中按顺序存储,每个元素都有唯一对应 的位置编号 ...

  7. C Primer+Plus(十一)

    第11章 字符串和字符串函数 11.1字符串表示和字符串I/O 11.1.1在程序中定义字符串 字符串定义: char s[10]="iamaboy!";//这是字符串 char ...

  8. C++ Primer Plus(十一)—— 使用类

    为什么80%的码农都做不了架构师?>>>    不要返回指向局部变量或临时对象的引用,函数执行完毕后,局部变量和临时对象都将消失,引用将指向不存在的数据. C++对用户定义的运算符重 ...

  9. 记录——《C Primer Plus (第五版)》第十一章编程练习第5-12题

    5.编写一个函数is_within(),它接受两个参数,一个是字符,另一个是字符串指针.其功能是如果字符在字符串中,就返回一个非0值(真):如果字符不在字符串中,就返回0值(假).在一个使用循环语句为 ...

最新文章

  1. FPGA基础知识极简教程(3)从FIFO设计讲起之同步FIFO篇
  2. markdown测试
  3. python 加速循环的执行_python循环怎么用多线程去运行
  4. mysql保存中文乱码的原因和解决办法
  5. php连接mysql的区别吗_php连接mysql之mysql_connect()与mysqli_connect()的区别
  6. Turing equation
  7. 【今日CS 视觉论文速览】 25 Jan 2019
  8. 使用trace_event跟踪进程的一生
  9. CSS基础之清除浮动
  10. android - 调用系统分享功能分享图片
  11. Japan树状数组求逆序数
  12. 5. 学习集合与常用类
  13. 1、pthon中类包含的方法
  14. POJ2653 Pick-up sticks
  15. pr双击打开图标没反应,下载ZXPSignLib-minimal.dll替换
  16. Windows 禁用U盘
  17. python中np是什么意思_了解python中np是做什么的
  18. IT从业者创业公司生存指南:创业初期 ---- 指点江山,激扬文字,粪土当年万户侯
  19. 孩子为什么不能玩抖音精彩回答,共勉
  20. 计算机任务管理器不能打开,电脑任务管理器无法打开怎么办

热门文章

  1. php 变量作用域local,PHP 变量的四大作用域
  2. 浪潮服务器 虚拟光驱,浪潮英信服务器NF5280M5
  3. 计蒜客第六场 微软大楼设计方案(困难)
  4. 在Ubuntu18.04中安装wps并且解决文字字体缺失的问题
  5. [蓝桥杯训练] 第八届(2017)省赛 C/C++ A组 T01 - 迷宫
  6. 数据结构最小堆C++实现
  7. 【PMP】收尾阶段的习题
  8. 通达信年涨幅主图指标
  9. 简化操作教会你如何使用接口,利用关键词搜索技术获取1688的商品数据
  10. element ui tree增删改查_clientgo连接K8s集群进行pod的增删改查