关于C语言杂记7

news2024/11/20 23:31:34

文章目录

  • 关于数组
  • 二级指针
  • 字符串
    • 字符串的输入与输出
    • 字符串函数
      • 1、字符数组的输入和输出:
      • 2、5种相关函数:

关于数组

 char *fruits[LEN] = {   // 定义一个字符指针数组,包含LEN个元素
        "apple",    // 初始化第1个元素为字符串"apple"
        "cherry",   // 初始化第2个元素为字符串"cherry"
        "grape",    // 初始化第3个元素为字符串"grape"
        "peach",    // 初始化第4个元素为字符串"peach"
        "watermelon"    // 初始化第5个元素为字符串"watermelon"
    };

    char **ptr = fruits;    // 定义一个字符指针的指针ptr,赋值为fruits数组的首元素的地址

二级指针

如何声明一个指向函数的指针?

void print(int num); // 声明函数
void (*funptr)(int) = print; // 声明指向函数的指针, 该函数接受一个int参数, 返回void, 并用print函数的地址初始化

函数名是什么?

函数名被使用时总是由编译器将它转换为该函数类型的函数指针, 比如 print 的类型就是 void () (int) 所以可以用 print 初始化 funptr. 当使用 & 时只是显示的说明了编译器的转换操作, 所以 print 与 &print 都是 void () (int) 类型.

如何通过指向函数的指针调用函数?(3种方法)

print(10); // (1) 使用函数名调用print函数
(*funptr)(10); // (2) 使用指向函数指针解引调用print函数`
funptr(10); // (3) 使用指向函数指针直接调用print函数

在这里插入图片描述

字符串

字符串的输入与输出

输入:如果想把一个字符串读取到程序中,必须首先预留存储字符串的空间,然后使用输入函数来获取这个字符串,C库提供了三个读取字符串的函数:scanf()、gets()和fgets()
输出:C语言有三个输出字符串的标准库函数:puts()、fputs()和printf()

题目:输入一个字符串,并反向输出。



/**
reverse()函数:
以上代码实现了一个字符串翻转的函数,函数名为 reverse,输入参数为一个指向字符数组的指针。

函数内部定义了三个指针变量,head 和 tail 初始时都指向字符串的第一个字符,ch 用来暂存头指针指向的字符。首先,通过 tail 指针遍历字符串,移动到字符串的倒数第二个字符(因为最后一个字符是 '\0' 结尾符),然后将 tail 指针调整到倒数第二个字符处。接着,使用 head 和 tail 指针交替指向的字符进行交换,直到 head 指针超过了 tail 指针。在交换字符的过程中,需要用变量 ch 暂存 head 指针指向的字符。注意,交换完一对字符后,需要将 tail 指针前移一位(tail--),head 指针后移一位(head++)。

最终,调用该函数后,输入的字符数组会被原地翻转。
*/
#include <stdio.h>
#define STR_LEN 101

// 定义一个字符串翻转的函数
void reverse(char *str)
{
    // 定义两个指针,head 指向字符串的开头,tail 指向字符串的结尾
    char* head = str;    
    char* tail = str;
    char ch;
 
    // 移动 tail 指针到字符串的倒数第二个字符
    while(*tail++);
    tail -= 2; // 调整 tail 指向倒数第二个字符
    
    // 交换 head 和 tail 指向的字符,直到 head 指针超过 tail 指针
    while(head < tail)
    {
        ch = *head;          // 用 ch 存储 head 指向的字符
        *head = *tail;       // 将 head 指向的字符和 tail 指向的字符交换
        *tail-- = ch;        // 将 tail 指向的字符修改为 ch 存储的字符,同时将 tail 指针向前移动一位
        head++;              //将head指针后移
    }
} 


int main(int argc, char** argv)
{
    char str[STR_LEN];
    char *rev_str = NULL;
    //输入处:
    printf("请输入一个字符串(length<=100):\n");
    scanf("%s", str);
    reverse(str);
    //输出处:
    printf("反转后的字符串为:\n%s", str);

    return 0;
}

输入和输出的其他写法:
//法一:
    puts("请输入一个字符串(length<=100):");
    gets(str);
    reverse(str);
    puts("反转后的字符串为:");
    puts(str);
    
//法二:
    fputs("请输入一个字符串(length<=100):\n", stdout);
    fgets(str, STR_LEN, stdin);
    reverse(str);
    fputs("反转后的字符串为:", stdout);
    fputs(str, stdout);
注意:fputc只能单独输出一个字符,fputs可以输出一个字符串

字符串函数

1、字符数组的输入和输出:

输入输出
第一组scanf(格式控制,地址表列)printf(格式控制,输出表列)
第二组gets(字符数组)puts(字符数组)
第三组fgets(str, STR_LEN, stdin)fputs(str, stdout)

2、5种相关函数:

函数:表现形式1表现形式2
1、字符串连接函数strcat(字符数组1,字符数组2)
2、字符串复制函数strcpy(字符数组1,字符数串2或者字符数组名)strncpy(字符数组1,字符串2或者字符数组名,n)
3、字符串比较函数strcmp(字符串1或者字符数组,字符数串2或者字符数组)
4、字符串长度函数strlen(字符串或者字符数组)
5、 字符串转换大小写函数大写转小写:strlwr(字符数组)小写转大写:strupr(字符数组)

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

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

相关文章

【C++】unordered_map和unordered_set的使用

文章目录 前言一、unordered_map的使用及性能测试二、unordered_set的使用 1.习题练习总结 前言 unordered 系列关联式容器 &#xff1a; 在 C98 中&#xff0c; STL 提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到O&#xff08;logN&#xff09; &a…

SDN — Google B4 SDN WAN 网络架构

目录 文章目录 目录Google B4 SDN WAN 网络B4 网络架构物理设备层局部网络控制层全局控制层Hybrid SDN 模式Google B4 SDN WAN 网络 Google 的 WAN 有 2 张网络(Two Backbones): B2(I-Scale Network):数据中心互联 Internet(POP)的网络,用于面向 Internet 用户访问,…

大象转身只需点点鼠标,爆火 DragGAN 原理浅析

出品人&#xff1a;Towhee 技术团队 作者&#xff1a;张晨 DragGAN介绍 合成满足用户需求的视觉内容往往需要对生成对象的姿势、形状、表情和布局进行灵活和精确的控制。 现有方法通过手动注释的训练数据或先前的 3D 模型获得生成对抗网络 (GAN) 的可控性&#xff0c;这通常缺乏…

保姆级教程:手把手教你拿下雅思写作7分

在留学路上&#xff0c;雅思考试是绕不开的一道坎。然而&#xff0c;众所周知&#xff0c;雅思学习热度高&#xff0c;学习难度大&#xff0c;而且很多人找不到合适的学习方法。在这里&#xff0c;我们以雅思写作中的大作文为例&#xff0c;从大作文的结构拆解、学习的任务拆分…

SSM编程---Day 02

目录 一、核心配置文件 二、junit介绍 三、自定义java注解 四、自定义注解 五、添加log4j的支持 六、sql映射文件的介绍 一、核心配置文件 1、核心配置文件中需要注意顺序 2、根节点 <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"…

数据结构-最小生成树Prim算法的实现

目录 一、前言 二、最小生成树 三、Prim算法 四、Prim算法的实现 一、前言 在计算机科学中&#xff0c;数据结构是一种组织和存储数据的方式&#xff0c;以便于访问和修改。数据结构是计算机科学的基础&#xff0c;它是算法的基础。在数据结构中&#xff0c;最小生成树是一…

Python调用腾讯云函数传递json数据

前言 有些时候有一些公共的方法&#xff0c;需要放在服务器上&#xff0c;在不同的电脑上使用。但是我们有没有自己的服务器&#xff0c;所以考虑将公共的方法放在腾讯云、华为云、阿里云、百度云等云平台上&#xff0c;方便在不同的电脑上复用。 我们这里使用的是腾讯云&#…

AMD Software Adrenalin Edition 23.5.1驱动发布,快速获取驱动

AMD新驱动赶在五月天发布&#xff01;AMD Software Adrenalin Edition 23.5.1驱动 &#xff0c;为部分游戏带来支持&#xff0c;以及为重要的软件带来修复。驱动人生带大家一览AMD WHQL 23.5.1驱动的优化内容。 游戏方面&#xff0c;AMD WHQL 23.5.1主要为游戏《指环王&#x…

详解MVCC相关知识点

前言&#xff1a;学习前&#xff0c;先叙述mysql相关基础知识&#xff0c;一步步了解mysql底层机制。 1.Mysql的隔离级别&#xff1a; 数据库事务的隔离级别有4个&#xff0c;由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable &#xff0c;这…

23种设计模式之观察者模式(Observer Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的观察者模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

计算机视觉与OpenCV算法学习内容总结,太详细了!

计算机视觉是一项基于数字图像和视频处理的前沿技术&#xff0c;在人工智能领域中得到了广泛应用。而OpenCV&#xff08;开源计算机视觉库&#xff09;是一款以C语言为主的跨平台计算机视觉库&#xff0c;被广泛认可为业界最优秀的计算机视觉库之一。 相比于传统的图像处理技术…

【selenium自动化测试入门】 python unittest单元测试框架

unittest又名PyUnit&#xff0c; Python单元测试框架&#xff08;The Python unit testing framework&#xff09;&#xff0c;简称为PyUnit。自从 Python 2.1 版本后&#xff0c;PyUnit成为 Python标准库的一部分。 为什么需要使用unittest单元测试框架&#xff1f; 当我们写…

老油条感叹:现在00后真的太卷了....

最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的软件测试技术栈&#xff0c;非常珍…

预训练模型 ---- BERT架构

目录 什么是BERT BERT的架构 BERT的预训练任务 小节总结 BERT的特点 BERT和GPT的区别 笔记参考&#xff1a;【2023最新&#xff01;4个小时带你重新认识【BERTtransformer】&#xff0c;详解self-attention&#xff0c;翻遍全网找不到比它更详细的了&#xff01;&#xf…

工作记录:在线 word - 列表

需求&#xff1a;上传 word 文档&#xff0c;在页面的富文本编辑器中展示、编辑后&#xff0c;再导出成 word 格式。 我负责开发列表功能 为什么不用 ul 一开始想用<ul> <li> 去实现列表&#xff0c;但随即发现一些问题&#xff1a; 问题一&#xff1a;word 中的…

知乎+chatgpt炸了!撸点小钱~

大家好&#xff0c;我是五竹。 之前分享了一下&#xff0c;朋友圈的好友如何复制我的玩法利用chatgpt赚点小钱的实战&#xff1a;TMD&#xff0c;被人偷窥了一个月&#xff01; 紧接着我自己最近也在知乎小赚了一笔&#xff01;我以为在知乎上那篇文章的热点就消退了&#xff0…

字节25K就面试这些?简直惊呆我了...

互联网行业竞争是一年比一年严峻&#xff0c;作为软件测试工程师的我们唯有不停的学习&#xff0c;不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里&#xff0c;字节跳动&#xff0c;腾讯&#xff0c;美团&#xff09; 话不…

获取安卓签名文件的MD5值与SHA1码

目录 前言 一、用命令行的方式仅能获取SH1、SHA256 ​编辑 二、用gradle的方式可以获取MD5值 1.打开Android Studio&#xff0c;点击右边的Gradle 2.点击大象&#xff0c;输入查询签名信息的命令 总结 前言 公司App项目要备案&#xff0c;要搜集MD5值与SHA1码&#xff0…

Software List

Ubuntu22 Goldendict Ubuntu安装划词翻译软件Goldendict 单词翻译 句子翻译_ubuntu划词翻译_Bourne_Boom的博客-CSDN博客有道词典长期未更新&#xff0c;由于某些模块不支持的问题已经无法在Ubuntu18.04中使用了。现在介绍另一款强大的翻译软件——Goldendict。1.安装&#…

Android Qcom Display学习(十四)

该系列文章总目录链接与各部分简介&#xff1a; Android Qcom Display学习(零) 本章主要就是学习一下开机logo和开机动画是怎么加载&#xff0c;客制化修改的。 Bootlogo QcomChargerApp.c QcomChargerApp_MonitorChargingQcomChargerAppDisplay_DispBattSymbol(DispImageTy…