指针应用基础练习

(1)一级指针,二级指针

void  getString(char  **p)
{*p = "hello world";
}int main(void)
{char *str = NULL;getString(&str);printf("%s\n",  str);
}

代码分析:
定义了一个char型指针str,开始的时候指向NULL,即str此时的值为0。 然后将 str 的地址传递给函数 getString(),而**p就是*p的地址,那么str的地址=*p的地址,所以

*p  = "hello world";等价于:str = "hello world";

(2)指针在字符串函数中的应用(strok)

对于这个函数需注意

1.该函数会改变原始字符串 str,使其所包含的所有分隔符变成结束标记 ‘\0’ 。
2.由于该函数需要更改字符串 str,因此 str 指向的内存必须是可写的。
3.首次调用时 str 指向原始字符串,此后每次调用 str 用 NULL 代替。

如果想详细了解strtok:http://t.csdn.cn/mwDpI

#include<stdio.h>
#include<string.h>
int main()
{char str[80]="aaa-bbb-ccc";const char stop[2]="-";char *s;s=strtok(str,stop);while(s!=NULL){printf("%s ",s);s=strtok(NULL,stop);} return 0;
}

执行结果如下 

(3)编写一个程序,将两个给定的字符串连接起来,要求不能用 strcat 或 strncat 函数。

注意:要考虑字符串拼接后存储空间是否足够,是否发生内存溢出的情况

代码如下

#include <stdio.h>
#include <string.h>char *strcat(char *str1, char *str2)
{int i;i = strlen(str1);int j;for(j=0; j<50-i; j++)//不能越界{str1[j+i] = str2[j];}return str1;
}int main(void)
{char str1[50] = "hello";char str2[50] = "csdn";printf("合并后: %s\n", strcat(str1, str2));return 0;
}

(4)编写一个函数,接收一个给定的字符串,返回去除所有的空格后的字符串

代码如下

#include <stdio.h>
#include <stdlib.h>char * trim(char *s)
{if(s == NULL)return s;int size = strlen(s) + 1;char tmp[size];for(int i=0, j=0; i<=size; i++){if(s[i]!=' '){tmp[j] = s[i];j++;}}memcpy(s, tmp, size);//将临时数组的数据复制回原始字符串数组return s;
}int main()
{char s[100];bzero(s, 100);//保证数组中的数据在使用前被置0fgets(s, 100, stdin);//从标准输入stdin中,读取最多100个字符,并将其存储到s数组,fgets函数在读取完字符后会自动停止,或者在遇到换行符后自动停止printf("%s\n", trim(s));return 0;
}

对于memcpy:不像strncpy函数一样只能拷贝字符,memcpy函数可以拷贝任意类型的内容

http://t.csdn.cn/SHoJL

参数destsrccount
解析目标空间地址要拷贝内容空间源地址拷贝内容字节数

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

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

相关文章

uni-app踩坑记

打包h5如何配置域名&#xff1a; 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/&#xff0c;否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada&#xff0c;页面样式会整个错乱&#xff0c;解决方案就是引入官方…

信号槽中的函数重载

信号槽中的函数重载 QT4的方式QT5的方式函数指针重载函数QT5信号函数重载解决方案 总结 QT4的方式 Qt4中声明槽函数必须要使用 slots 关键字, 不能省略。 信号函数&#xff1a; 槽函数&#xff1a; mainwondow: cpp文件&#xff1a; #include "mainwindow.h"…

WebSocket协议解析

文章目录 概要一、WS原理1.1、帧格式 二、WS实战2.1、客户端发起协议升级请求2.2、服务端响应协议升级2.3、核心事件2.4、心跳保活 三、总结 概要 项目中的IM系统是基于WebSocket做的&#xff0c;所以这里聊一下。 说到WS&#xff0c;不得不提HTTP,HTTP是基于TCP&#xff0c;面…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十二天 42/50【unordered_set】【双指针处理连续】【翻转字符串】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

AD21原理图的高级应用(五)自定义原理图模板及调用

&#xff08;五&#xff09;自定义原理图模板及调用 1.创建原理图模板2.调用原理图模板 1.创建原理图模板 利用 Altium Designer 软件在原理图中创建自己的模板,可以在图纸的右下角绘制一个表格用于显示图纸的一些参数,例如文件名、作者、修改时间、审核者、公司信息、图纸总数…

Java中的包是什么?

Java中的包&#xff08;package&#xff09;是Java语言中的一个重要概念&#xff0c;它可以帮助我们组织和管理Java类和接口&#xff0c;使得代码更加清晰、易于维护。 从新手的角度来看&#xff0c;包就像是一个“盒子”&#xff0c;我们把不同的类和接口放进去&#xff0c;这…

shopee,lazada,etsy店群如何高效安全的管理

对于电商卖家来说&#xff0c;要经营多个店铺&#xff0c;管理多个账号是非常常见的操作。为了避免账号关联被平台识别出来&#xff0c;需要使用防关联的浏览器来进行操作 ​1、支持多平台 支持同时管理多个电商平台店铺&#xff0c;Shopee、Lazada、etsy、poshmark、vinted等&…

Vue.js 生命周期函数

系列文章目录 Vue.js基础简答题 文章目录 系列文章目录前言一、创建阶段1.beforeCreate2.created3.beforeMount4.mounted 二、运行阶段1.beforeUpdate2.updated 三、销毁阶段1.beforeDestroy2.destroyed 总结 前言 Vue.js 生命周期指的是Vue实例的生命周期&#xff1b; Vue实…

【RabbitMQ】Linux系统服务器安装RabbitMQ

一、下载 首先应该下载erlang&#xff0c;rabbitmq运行需要有erland环境。 官网地址&#xff1a;https://www.erlang.org/downloads 下载rabbitmq 官网环境&#xff1a;https://www.rabbitmq.com/download.html 注意&#xff1a;el7对应centos7&#xff0c;el8对应centos8…

极光Java 版本服务器端实现别名消息推送

文章目录 引言I 概述1.1 依赖包1.2 极光证书环境参数1.3 构建推送对象II 推送内容2.1 配置推送内容2.2 获取通知消息内容2.3 配置IOS通知内容2.4 配置Android通知内容2.5 发起推送2.6 分批推送2.7 初始化密钥2.8 配置密钥引言 REST API 文档:https://docs.jiguang.cn/jpush/se…

sql片段以及Foreach

sql片段&#xff1a; 有时候可能某个 sql 语句我们用的特别多&#xff0c;为了增加代码的重用性&#xff0c;简化代码&#xff0c;我们需要将这些代码抽取出来&#xff0c;然后使用时直接调用。 <sql id"if-title-author"><if test"title ! null&quo…

腾讯云裸金属服务器CPU型号处理器主频说明

腾讯云裸金属服务器CPU型号是什么&#xff1f;标准型BMSA2裸金属服务器CPU采用AMD EPYC ROME处理器&#xff0c;BMS5实例CPU采用Intel Xeon Cooper Lake处理器&#xff0c;腾讯云服务器网分享落进书房武器CPU型号、处理器主频说明&#xff1a; 裸金属服务器CPU处理器说明 腾讯…

在Word中快速输入方框对号

在Word中输入方框对号播报文章 先输入“2611”&#xff0c;然后同时按ALTX&#xff0c; 插入 符号 其他符号

主流开源监控系统一览

减少故障有两个层面的意思&#xff0c;一个是做好常态预防&#xff0c;不让故障发生&#xff1b;另一个是如果故障发生&#xff0c;要能尽快止损&#xff0c;减少故障时长。而监控的典型作用&#xff0c;就是帮助我们发现及定位故障&#xff0c;这两个环节对于减少故障时长至关…

STM32 串口学习(二)

要用跳线帽将PA9与RXD相连&#xff0c;PA10与TXD相连。 软件设计 void uart_init(u32 baud) {//UART 初始化设置UART1_Handler.InstanceUSART1; //USART1UART1_Handler.Init.BaudRatebound; //波特率UART1_Handler.Init.WordLengthUART_WORDLENGTH_8B; //字长为 8 位数据格式U…

Vue中data没有写return报Cannot read property ‘__ob__‘ of undefined错误

最近需到一个在开发中很常见错误&#xff0c;原因是自己开发时没仔细检查代码&#xff0c;删除数据时把data中return一并删除了&#xff0c;导致路由跳转点击无反应。data函数在Vue中是一个特殊的方法&#xff0c;用于定义组件的本地状态。经翻阅相关文档&#xff0c;了解到它必…

golang 字符串操作、处理

一、golang的字符串长度 1. len()内置系统函数&#xff0c;计算字符串结果是字符串的字节长度&#xff0c;不是字符长度 //1.ASCII字符串长度&#xff08;字节长度&#xff09; str1 : "wo ai zhong guo" fmt.Println(len(str1)) //15//2.带中文的字符串长度&…

CAN通信的位定时与同步

位定时与同步 1.位时间 1.1相关基本概念 1&#xff09;系统时钟&#xff1a;记为 t c l k t_{clk} tclk​&#xff1b; 2&#xff09;CAN时钟周期&#xff1a;CAN时钟是由系统时钟分频而来的一个时间长度值&#xff0c;表示CAN控制器的工作时钟&#xff0c;实际上就是一个时…

网络编程套接字

网络编程套接字 预备知识理解源IP地址和目的IP地址认识端口号理解 "端口号" 和 "进程ID"理解源端口号和目的端口号认识TCP协议认识UDP协议网络字节序 socket编程接口socket 常见APIsockaddr结构 简单的UDP网络程序UDP通用服务端udp服务端初始化udp服务端启…

基于Innobackupex的MySQL备份脚本

基本要求&#xff1a; 1&#xff0c;周日全备 2&#xff0c;周一至周六增量备份 3&#xff0c;备份使用backup用户 grant SELECT,RELOAD,SHOW DATABASES,LOCK TABLES,SUPER,REPLICATION CLIENT on *.* to backuplocalhost identified by 123456; 4&#xff0c;结合计划…