当前位置: 首页 > news >正文

字符串(1)

1.字符串的2种定义方式和底层细节

只要用双引号括起来的都是字符串

2.练习 键盘录入字符并遍历

#include <stdio.h>
int main()
{/*需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串*///1.键盘录入一个字符串//底层逻辑://    程序在运行的时候,首先会创建一个长度为100的字符数组str//    在进行键盘录入的时候,会把每一个字符存入到上面的str数组当中,并加上结束标记//    在这个过程中,需要修改字符数组的内容,所以第一种方式可以,第二种方式不可以char str[100];printf("请录入一个字符串\n");scanf("%s", str);//str本身就是一个指针,所以不用再加&printf("接收到的字符串为:%s", str);//2.遍历字符串得到每一个字符char* p = str;while (1){//利用指针获取字符串中的每一个字符,知道遇到\0为止char c = *p;//判断当前获取到的字符是否为结束标记if(c == '\0'){//如果是结束标记,循环结束break;}printf("%c\n", c);//指针往后移动一个位置p++;}return 0;}
3.#include <stdio.h>
int main()
{/*需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串*///1.键盘录入一个字符串//底层逻辑://    程序在运行的时候,首先会创建一个长度为100的字符数组str//    在进行键盘录入的时候,会把每一个字符存入到上面的str数组当中,并加上结束标记//    在这个过程中,需要修改字符数组的内容,所以第一种方式可以,第二种方式不可以char buffer[10];printf("请录入一个字符串\n");scanf_s("%s", buffer, sizeof(buffer));//str本身就是一个指针,所以不用再加&printf("接收到的字符串为:%s\n", buffer);//2.遍历字符串得到每一个字符//遍历字符串其实就是遍历str这个数组,但是,字符串的内容不知道,所以不能用for循环,// 因为不知道循环的次数,也不知道循环的范围,但是能知道每一个字符串的结尾都会有一个\0作为结束标记,// 所以要用whie循环char* p = buffer;while (1){//利用指针获取字符串中的每一个字符,知道遇到\0为止char c = *p;//先写一个临时变量char c,用他去记录当前指针获取到的数据,//在下面就可以对获取到的数据c来做一个判断//判断当前获取到的字符是否为结束标记if (c == '\0'){//如果是结束标记,循环结束break;}//打印当前遍历到的字符printf("%c\n", c);//指针往后移动一个位置p++;}return 0;
}

3.字符串数组

#include <stdio.h>
int main()
{/*需求:定义一个数组存储5个学生的名字并进行遍历字符串的底层其实就是字符数组把多个字符数组,再放入到一个大的数组当中二维数组*///1.定义一个二维数组,存储多个学生的名字//先写一个char,然后给这个数组起一个名字,比如说就叫做strArr,就表示字符串的数组,//既然是一个二维数组,后面要写2个[],第一个表示要存多少个一维数组,第二个表示字符串有多长,可以写大一点char strArr[5][100] ={"zhangsan","lisi","wangwu","zhaoliu","qianqi"};//2.遍历二维数组for (int i = 0; i < 5; i++){//i.依次表示二维数组中的每一个索引char*str=strArr[i];//利用strArr和索引,就能获取到每一个一维数组,而这里的一维数组,其实就是表示每一个名字//然后再把他进行赋值,赋值给一个str的指针,printf("%s\n", str);//小小的细节:就在通过strArr获取每一个元素的时候,只能复制给指针,如果说再写一个数组,比如说//char str[100] =strArr[i],这样子是不行的//应该得在后面加{},即:char str[100]={}}//第二种方式//把第五个字符串的指针,放入到一个数组当中//指针数组char* strArr2[5] ={"zhangsan","lisi","wangwu","zhaoliu","qianqi"};//遍历指针数组for (int i = 0; i < 5; i++){//i:依次表示数组中的每一个索引char* str = strArr2[i];printf("%s\n", str);}return 0;
}

文章转载自:

http://EFRW5Tl5.xqgtd.cn
http://KvMv2KLF.xqgtd.cn
http://Y4sUvCXE.xqgtd.cn
http://d1X4OEG3.xqgtd.cn
http://rKNzTUuH.xqgtd.cn
http://CPWJJ6PU.xqgtd.cn
http://OYAeSO8J.xqgtd.cn
http://uLwhYu5u.xqgtd.cn
http://0reTd5Cy.xqgtd.cn
http://mBzUwuue.xqgtd.cn
http://otQf125y.xqgtd.cn
http://uh21URCG.xqgtd.cn
http://6GOp2mlt.xqgtd.cn
http://4workYlW.xqgtd.cn
http://YcPkwp5I.xqgtd.cn
http://OYSk82Mi.xqgtd.cn
http://inYBTLoP.xqgtd.cn
http://hKloZ1ig.xqgtd.cn
http://bYwdzlFD.xqgtd.cn
http://ngK3JC7q.xqgtd.cn
http://akANevm5.xqgtd.cn
http://v0QJCMBZ.xqgtd.cn
http://cFChusu2.xqgtd.cn
http://dQ0QdalN.xqgtd.cn
http://l43BE1uC.xqgtd.cn
http://gYdjnqgC.xqgtd.cn
http://JN8Oqh5l.xqgtd.cn
http://T538Lg74.xqgtd.cn
http://3BoKcCK8.xqgtd.cn
http://82zAbgCm.xqgtd.cn
http://www.dtcms.com/a/366145.html

相关文章:

  • 关于多Agent协作框架的讨论:以产品经理工作流为例对比Sub Agent与AutoGen
  • 论文阅读:arixv 2024 Adversarial Attacks on Large Language Models in Medicine
  • SpringMVC —— 响应和请求处理
  • 低代码开发平台技术总结
  • Coze源码分析-资源库-删除提示词-后端源码
  • Selenium
  • 一个基于 axios 的请求封装工具 - request-fruge365
  • Energy期刊论文学习——基于集成学习模型的多源域迁移学习方法用于小样本实车数据锂离子电池SOC估计
  • scss 转为原子css unocss
  • 【Linux】环境变量与程序地址空间详解
  • Linux——服务器多线程压缩工具介绍
  • 深入探讨AI三大领域的核心技术、实践方法以及未来发展趋势,结合具体代码示例、流程图和Prompt工程实践,全面展示AI编程的强大能力。
  • Makefile学习笔记 (1)
  • Horse3D游戏引擎研发笔记(九):使用现代图形引擎的元数据管理纹理创建过程(类Unity、Unreal Engine与Godot)
  • vue2 打包生成的js文件过大优化
  • 【iOS】对象复制与属性关键字
  • Linux编程——网络编程(UDP)
  • 当液态玻璃计划遭遇反叛者:一场 iOS 26 界面的暗战
  • 大语言模型推理的幕后英雄:深入解析Prompt Processing工作机制
  • 计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统
  • 如何轻松地将联系人从 Mac 同步到 iPhone
  • 如何本地编译servicecomb-java-chassis
  • 系统越拆越乱?你可能误解了微服务的本质!
  • 商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
  • SVN和Git两种版本管理系统对比
  • Clang 编译器:下载安装指南与实用快捷键全解析
  • Java全栈开发面试实录:从基础到微服务的深度探索
  • CentOS系统如何查看当前内存容量
  • SuperSocket 动态协议服务端开发全解析
  • RTSP 协议认证机制详解:Basic 与 Digest 的原理与应用