IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 程序设计与算法(一)C语言程序设计 -> 正文阅读

[C++知识库]程序设计与算法(一)C语言程序设计

第七周(笔记)

7.1字符串的形式存储

  • 字符串的三种形式
    1. 用双引号括起来的字符串常量,如"CHINA",“c++program”.
    2. 存放于字符数组中,以‘/0’字符结尾(ascill为0)
  • 字符串常量
    • 字符串常量占据内存的字节数等于字符串字符数目加1,多出来的结尾字符是‘/0’。
    • 字符串的长度不包含‘/0’。
    • ""也是合法的字符串常量,称为空串
    • 如果字符串常量中包含双引号,则双引号应写为’ " ‘。而’ \ ‘字符在字符串中出现时,需连续写两次,变成’ \ '
  • 用一维char数组存放字符串
    • 包含’\0’ 字符的一维char数组,就是一个字符串。其中存放的字符串即为’\0’ 前面的字符组成
    • 用char数组存放字符串,数组元素个数应该至少字符串长度+1
    • char 数组的内容,可以在初始化时设定,也可以用c++库函数进行修改,还可以用对数组元素赋值的办法任意改变其中的某个字符。
    • 字符数组同样可以用cout,printf输出,用cin,scanf读入。用cin、printf将字符串读入字符数组时,会自动在字符数组中字符串的末尾加上’\0’

7.2 用scanf读入字符串

  • 用scanf可以将字符串读入字符数组
  • scanf会自动添加结尾的’\0’,%s读入,不加取地址符
  • scanf读入到空格为止
  • 在数组长度不足的情况下,scanf可能导致数组越界,若输入"12345",空间只有5则越界,因为字符串末尾还有个’\0’.
  • 读入一行到字符数组:cin.getline(char buf[],int bufsize);读入一行(行长度不超过bufsize-1)或bufsize-1个字符到buf,自动添加’\0’回车换行符不会写入buf,但是会从输入流中去掉
  • **读入一整行,比cin快,使用gets(char buf[]);**自动添加’\0’,回车换行符不会写入buf,但是会从输入流中去掉。可能导致数组越界

7.3 字符串库函数

  • 使用字符串库函数需要#include < cstring >
  • 字符串函数都根据’\0’来判断字符串结尾
  • 形参 char[] 类型,则实参可以是char数组或字符串常量
  • 库函数
    1. 字符串拷贝:strcpy(char [] dest,cahr [] src);
      拷贝src到dest

    2. 字符串比较大小:int strcmp (char [] s1,char [] s2);
      s1 == s2返回0,s1>s2 返回值大于0,s1 < s2 返回值小于0.

    3. 求字符串长度:int strlen(char [] s);不包含结尾’\0’

    4. 字符串拼接:strcat(char [] s1,char [] s2);
      s2拼接到s1后面

    5. 字符串转成大写:strupr(char []);

    6. 字符串转成小写:strlwr(char []);

注意:

  • 使用strlen函数时最好先将函数的返回值赋给一个变量,如果放在循环中的话,效率会大大降低,因为每次执行循环都会执行一遍strlen函数,而每次执行strlen函数时,时间和字符串长度成正比。

  • 当求数组中元素个数而需要遍历时,也可以这样写for (int i = 0;s[i];i++)

7.4 编写判断字串的函数

/*
int Strstr(char s1[],char s2[]);
要求:
  如果s2不是s1的子串,返回-1
  如果s2是s1的子串,返回其在s1中第一次出现的位置
  空串是任何串的子串,且出现位置为0
*/
#include <iostream>
using namespace std;
int Strstr(char s1[], char s2[]) {
    if (s2[0] == 0) return 0;
    for (int i = 0; s1[i]; i++) {
        int k = i, j = 0;
        for (; s2[j]; j++, k++) {
            if (s1[k] != s2[j]) break;
        }
        if (s2[j] == 0) return i;
    }
    return -1;
}
int main()
{
    char s[] = "sdfsss";
    char a[] = "df";
    cout << Strstr(s,a);
    
    return 0;
}
//更好的算法kmp
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:31:54  更:2021-07-28 07:34:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/29 4:23:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码