C语言之长见识了(函数和一些不常见类型)

news/2024/5/4 19:56:14/文章来源:https://blog.csdn.net/weixin_46372074/article/details/127055488

C

  • 1. strstr
  • 2. gets
  • 3. strlen
  • 4. \r\n
  • 5. const char * 与 char const *
  • 6. size_t、ssize_t、unsigned char、uint8_t
    • 6.1 size_t、ssize_t
    • 6.2 unsigned char
    • 6.3 uint8_t / uint16_t / uint32_t / uint64_t
  • 7. memcpy

1. strstr

在字符串 haystack 中查找第一次出现字符串 needle 的位置, 没有返回NULL.

char *strstr(const char *haystack, const char *needle)
  • haystack – 要被检索的 C 字符串。
  • needle – 在 haystack 字符串内要搜索的小字符串。

2. gets

获取一个可以含空格的字符串. 成功返回str, 错误或为空则返回 NULL。

char *gets(char *str)
  • str – 这是指向一个字符数组的指针,该数组存储了 C 字符串。

代码:

#include <stdio.h>
#include <string.h>
int main()
{printf("输入字符串:\n");char str1[100];gets(str1);char str2[100];printf("输入子串:\n");gets(str2);if (strstr(str1, str2) != NULL){printf(" %s 是 %s 子串\n", str2, str1);}else{printf(" %s 不是 %s 子串\n", str2, str1);}return 0;
}

运行结果:

在这里插入图片描述

在这里插入图片描述

3. strlen

size_t strlen(const char *str)
  • str – 要计算长度的字符串。

代码:

#include <stdio.h>
#include <string.h>int main()
{printf("输入字符串:\n");char str1[100];gets(str1);int len = strlen(str1);if (len > 0) // 不空{printf("str1长度:%d\n", len);printf("str1 -> %s\n", str1);}else // 不空{puts("输入字符串为空.");}return 0;
}

运行结果:

在这里插入图片描述

在这里插入图片描述

4. \r\n

在Windows中:

‘\r’ 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;

‘\n’ 换行,换到当前位置的下一行,而不会回到行首;

5. const char * 与 char const *

C++标准规定,const关键字放在类型或变量名之前等价的。
so

const char* 等价于 char const*

6. size_t、ssize_t、unsigned char、uint8_t

6.1 size_t、ssize_t

size_t 类型表示C中任何对象所能达到的最大长度,它是无符号整数。

  • size_t在32位架构中定义为:typedef unsigned int size_t;

  • size_t在64位架构中被定义为:typedef unsigned long size_t;

  • size_t是无符号的,并且是平台无关的,表示0-MAXINT的范围;int为是有符号的;

ssize_t是有符号整型(signed size_t),在32位机器上等同与int,在64位机器上等同与 long int.

  • %d输出int型;%zu输出size_t型。size_t在库中定义为unsigned int。(一个是整型,一个是无符号整型。)
    unsigned (%u)表示无符号。 电脑是二进制存储,无符号就是没有正负号,所以存储的数据是没有符号位的。

补充:如果%zu不能使用,可以用%u取代。%zu不能输出负数。

#include <stdio.h>
#include <string.h>int main()
{int num = 5;size_t len = sizeof(num);printf("size_t len = %zu\n", len);printf("size_t len = %u\n", len);return 0;
}

6.2 unsigned char

char 和 short / int / long 都是整型. unsigned char和char 都是一个字节长度(8bit), 它们唯一的不同就是unsigned char 没有最高位的符号位.

6.3 uint8_t / uint16_t / uint32_t / uint64_t

这都是使用typedef给类型起得别名。

1字节 uint8_t

2字节 uint16_t

4字节 uint32_t

8字节 uint64_t

7. memcpy

void *memcpy(void *str1, const void *str2, size_t n)
  • str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
  • str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
  • n – 要被复制的字节数。
#include <stdio.h>
#include <string.h>int main()
{char *str = "0123456789";char str2[20];memcpy(str2, str, strlen(str) + 1);printf("str2 -> %s\r\n", str2);return 0;
}

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

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

相关文章

【汽车ECU开发】------INCA使用教程

对于VCU或者是发动机标定工程师&#xff0c;INCA简直是跟亲人一样熟悉&#xff0c;基本上每天都要跟它打交道。分享一波INCA的基本使用操作。其基本的流程如下图所示&#xff1a; 主要操作步骤&#xff0c;打开软件&#xff1a; 点击菜单栏左上角数据库—>新建&#xff0…

TCS34725颜色感应识别模块

TCS34725颜色感应识别模块前言一、模块介绍二、产品参数三、实物图四、模块引脚介绍五、使用说明工作模式的选择上位机界面说明六、实例应用实物接线所用代码前言 TCS34725传感器模块&#xff0c;使用IIC或者UART通信&#xff0c;可直接输出RGB值。 能当做单纯的简单TCS34725模…

Java入门基础知识

Java入门基础知识概念 关键字:具有特殊用途的单词。 保留字:未使用的关键字(goto const)。 直接量:不可用作标识符(ture false null)。 一、JAVA运行机制 Java程序的运行必须经过编写、编译、运行三个步骤。 编写是指在Java开发环境中进行程序代码的输入,最终形成后缀名…

教你如何使用GPA导出模型,另送一个 GPA CSV2MESH Tool in unity

以前写过一篇&#xff1a;Unity - RenderDoc 抓帧导出 FBX&#xff08;带UV&#xff09; 吐槽 我估计GPA是怕收律师函&#xff0c;因为如果 GPA 将所有资源一键提取&#xff0c;一键导出&#xff0c;那么可能很多开发商会告他 可以看到也好几个帖子问 GPA 官方&#xff0c;都…

【PDN仿真笔记3-电容布局Q3D模型搭建】

PDN仿真笔记3-电容布局Q3D模型搭建 1. 叠层参数及设计要求 2. 变量设置 根据设计要求&#xff0c;将各个参数设置为变量&#xff0c;通过Add添加变量名称及数值&#xff08;下图value应该为1.2mil&#xff09; 部分设置完成的变量 3.搭建平面 引用2节中设置的变量&#xf…

检测网络框架越来越多

搬运工又来了 之前也发过相关 在汇总说一下啊~~ yolo也不在孤单了~~ 出了一大堆了~~ 之前都一一发过 今天在来个大汇总 目标检测是现在最热门的研究课题&#xff0c;也一直是工业界重点研究的对象&#xff0c;最近几年内&#xff0c;也出现了各种各样的检测框架&#xff0c…

PHP第三方易宝支付对接

简言&#xff1a; 最近手头有个数字藏品的项目&#xff0c;需要对接第三方易宝支付&#xff0c;在此整理自己的对接经验&#xff0c;希望对大家有所帮助。 步骤 1&#xff0c;下载sdk PHP第三方支付易宝支付最新sdk包&#xff0c;其中包含回调。-PHP文档类资源-CSDN下载 2&…

树形DP

285. 没有上司的舞会 - AcWing题库 题意是给你每个人的开心值&#xff0c;和每个人的顶头上司&#xff0c;如果每个人与自己的顶头上司不会同时去的前提下&#xff0c;问你最大的开心值是多少 树形dp 注释写在代码下面啦~ #include<iostream> #include<cstring>…

ThinkPHP6.0开启多应用模式的方法

ThinkPHP发展至今已经到了6..0.X版本,整个结构较thinkphp5有了很大的变化,ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级(官方给出了升…

3_1 操作系统

3.01 操作系统概述 接口的区分&#xff1a; 人机之间的接口&#xff1a;命令&#xff0c;窗口应用软件与硬件之间的接口&#xff1a;api的接口 进程管理 3.02 进程管理——进程状态转换图 进程的状态&#xff1a;操作系统当中对进程进行管理的时候&#xff0c;为进程指定了几种…

一个项目的整个流程

1.基本配置 基础配置包括 1.Vuex------------作用:存储公共的数据 2.Vue-router---------作用:配置页面的映射关系 3.node_modules--------作用:包的管理工具 npm i 包的名字 4.vue.config.js-----------配置一些信息 例如配置跨域的问题 5.assets 放一些静态的资源…

JAVA毕设项目酒店员工管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

JAVA毕设项目酒店员工管理系统&#xff08;VueMybatisMavenMysqlsprnigSpringMVC&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

DoIP协议:通用DoIP首部否定确认码02和03的区别

通用DoIP首部否定确认消息 当外部测试设备(诊断仪)发送DoIP消息给DoIP实体时,DoIP实体的传输层把DoIP消息(传输层payload,即DoIP header + DoIP payload)上发给DoIP协议层。DoIP协议层取到数据后,不管它是什么类型的DoIP消息,首先都需要被DoIP通用首部处理程序按照规定…

【统计学习|书籍阅读】第六章 logistics回国和最大熵模型 p77-p88

文章目录思路logistic回归模型最大熵模型最大熵模型定义最大熵模型的学习极大似然估计模型学习的最优化算法思路 logistic 回归是统计学习的经典分类方法。最大熵是概率模型学习的一个准则&#xff0c;将其推广到分类问题得到最大熵模型。 logistic回归模型 logistic分布&am…

# 二叉树和线索二叉树相关问题v1

文章目录二叉树和线索二叉树相关问题v1遍历算法遍历顺序分类遍历要点核心递归方式非递归方式线索二叉树二叉树vs线索二叉树(逻辑结构OR存储结构)线索二叉树的空指针剩余问题线索二叉树的遍历二叉树和线索二叉树相关问题v1 遍历算法 pre (NLR)A{B(DHI)(EJK)}{C(FLM)(GNO)}:∠\a…

【云原生 • Kubernetes】配置管理 - Secret ConfigMap

本文导读一、机密配置抽象 Secret1. 认识 Secret2. Secret 的使用(1) 创建 Secret 加密数据(2) 将 Secret 以变量形式挂载到 pod 容器二、配置抽象 ConfigMap1. 认识 ConfigMap2. ConfigMap 的使用(1) 创建配置文件(2) 创建 ConfigMap(3) 将 ConfigMap 以变量形式挂载到 pod 容…

如何保存el-pagination组件的分页状态。

一文细解如何保存组件的分页状态。 文章目录一文细解如何保存组件的分页状态。背景一、实现原理二、代码展示1.分页组件模板背景 使用element-plus的分页组件搭建页面的时候&#xff0c;经常会出现这样一种情况&#xff1a;分页为列表页&#xff0c;当从列表页点击某一项进入详…

HTTP协议4)----对于数据链路层的详细讲解

꧁ 大家好&#xff0c;我是 兔7 &#xff0c;一位努力学习C的博主~ ꧂ ☙ 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步❧ &#x1f680; 如有不懂&#xff0c;可以随时向我提问&#xff0c;我会全力讲解~&#x1f4ac; &…

Springboot2.x仿B站项目第五章查询Es和内容推荐功能实现笔记及源码

文章目录系统全局模块的开发1.系统全文搜索1.1docker 下安装ES以及kibana1.2 配置Es的相关的yaml和configuration1.3 ES全文检索需求视频投稿搜索查询2.观看记录的统计2.1观看视频的添加信息2.2查询观看记录3.用户视频推荐4.视频弹幕遮罩其他章节系统全局模块的开发 本章主要实…

嵌入式分享合集67

一、CAN的接口保护电路 在一个模块上&#xff0c;由于是中转的CAN&#xff0c;需要从两个不同的连接器上连接出去&#xff08;这种情况是根据客户的需求而定的&#xff09;。 一般的设计如图&#xff1a; 一般的&#xff0c;我们最多使用两个电压斜坡控制电容&#xff08;C2和…