首页 > 其他分享 >C语言笔记21 字符串

C语言笔记21 字符串

时间:2024-10-20 17:50:38浏览次数:3  
标签:字符 string C语言 char 数组 字符串 指针 21

字符数组

char word[] = {'H','e','l','l','o','!'};

word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!

这不是C语言的字符串,只是字符数组,不能用字符串的方式做计算

字符串

char word[] = {'H','e','l','l','o','!','\0'};

word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!
word[6]\0

区别:\0,共有7个单元

  • 以0(整数0)结尾的一串字符(0或'\0'是一样的,但是和'0'不同)
  • 0标志字符串的结束,但它不是字符串的一部分,计算字符串长度的时候不包含0
  • 字符串以数组的形式存在,以数组或指针的形式访问(更多的是以指针)
  • string,h里有很多处理字符串的函数

字符串变量

char *str = "Hello";

char word[] = "Hello";

char line[10] = "Hello";

字符串常量“Hello"

"Hello"会被编译器变成一个字符数组放在某处,这个数组的长度是6(结尾还有0)

两个相邻的字符串常量会被自动连接起来

字符串

C语言的字符串是以字符数组的形态存在的

不能用运算符对字符串做运算,通过数组的方式可以遍历字符串

唯一特殊的地方是字符串字面量可以用来初始化字符数组

字符串变量

char* s = "Hello world!";

s是一个指针,初始化为指向一个字符串变量。由于这个常量所在的地方,所以实际上s是const char* s,但是由于历史的原因,编译器接受不带const的写法;但是试图对s所指的字符串做写入会导致严重的后果

如果需要修改字符串,需要用数组的方式:char s[] = "Hello world!";

指针or数组

数组:这个字符串在这里,作为本地变量自动被回收

指针:这个字符串不知道在哪里,用于处理参数、动态分布空间

*构造:数组;处理:指针

char*是字符串吗

字符串可以表达为char*的形式,但char*不一定是字符串

本意是指向字符串的指针,可能指向的是字符的数组(就像int*一样)

只有它所指的字符数组有结尾的0,才能说它所指的是字符串

字符串的输入输出

char string[8];

scanf("%s", string);

printf("%s", sting);

scanf读入一个单词(到空格、tab或回车为止)

这个scanf是不安全的,不知道要读入的内容的长度

安全写法:

char string[8];

scanf("%7s", string);

printf("%7s", sting);

在%和s之间的数字表示最多允许读入的字符的数量,这个数字应该比数组的大小小一

常见错误

char *string;

scanf("%s", sring);

以为char*是字符串类型,定义了一个字符串类型的变量string就可以直接使用了,由于没有对string初始化为0,所以不一定每次运行都出错

空字符串

char buffer[100]="";

这是一个空的字符串,bufffer[0] == "\0",依然是有效字符串

但char buffer[] = "";的数组长度只有1,只有buffer[0]是有效的

字符串数组

char **a:a是一个指针,指向另一个指针,那个指针指向一个字符(串)

char a[][]

程序参数

int main(int argc, char const *argv[])

argv[0]是命令本身,当使用Unix的符号连接时,反映符号链接的名字

标签:字符,string,C语言,char,数组,字符串,指针,21
From: https://blog.csdn.net/2401_87749224/article/details/143089466

相关文章

  • [包教包会]C语言:详解分支语句(if , switch , goto)和循环语句(while , for , do while
    概览控制语句用于控制程序的执行流程,以实现程序的各种结构方式C语言支持三种结构:顺序结构、选择结构(分支)、循环结构:(其实显示中的事件也都是由这三者混合合成的)它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:1.条件判断语句也叫分支语句:if语句......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第四周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<了解并学习AI功能,回顾一周课程心得>作业正文...本博客链接https://www.cnblogs.com/guchua......
  • 【C语言】指针进阶【万字详细版】
    ㊙️小明博客主页:➡️敲键盘的小明㊙️✅关注小明了解更多知识☝️文章目录前言一、字符指针二、指针数组三、数组指针3.1数组指针的定义3.2数组名和&数组名3.3数组指针的使用四、数组参数、指针参数4.1—维数组传参4.2二维数组传参4.3一级指针传参4.4二级指针......
  • C语言库函数round函数
    简单使用:把浮点数四舍五入到整数round函数定义在<math.h>头文件中,其原型为doubleround(doublex);round函数用于将浮点数四舍五入到最接近的整数以下的C语言代码用round函数计算了不同浮点数的四舍五入值,并将结果打印出来#include<stdio.h>#include<math.h>intmai......
  • C语言练习之猜数字游戏
    一游戏规则:1.在电脑上生成1-100的随机数2.玩家可以输入所猜数字,电脑根据输入数字做出猜大、猜小、猜对的反馈二游戏的实现:1.随机数的生成:1.1rand C语言的库函数提供了一个rand函数,它的头文件是stdlib.h,rand函数可以根据一个种子随机生成0-RAND_MAX(最少是32767)......
  • C语言小白 记录自己对一些概念的理解 若有错误 多包涵 若能指正 万分感激
    当你想将输入和判断输入一起做时可以用while((数组名[i]=getchar())!='\n')记得拿括号括起来辅助在写!=CG平台使用输入重定向输入测试数据,需要使用(ch=getchar())!=EOF判断字符串输入结束,如果使用(ch=getchar())!='\n'上传到CG平台后可能会超时。写oj的时候如......
  • C语言中的段错误(Segmentation Fault):底层原理及解决方法
    引言在C语言编程中,“段错误”(通常由操作系统信号SIGSEGV触发)是一种常见的异常情况,它表明程序试图访问不受保护的内存区域。本文将深入探讨段错误的原因、底层原理、常见情况以及如何调试和解决这类错误。段错误的定义段错误是一种运行时错误,通常由以下几种情况触发:访......
  • ICPC 2021–2022,NERC – 北欧欧亚总决赛题解翻译
    原文链接ICPC2021–2022,NERC–北欧欧亚总决赛题解翻译圣彼得堡,阿拉木图,巴尔瑙尔,明斯克,埃里温,2022年4月13日问题A.可接受的地图(AdmissibleMap)问题作者和开发者:IlyaZban我们称形如“RLRL...RL”的任何字符串为平凡字符串。引理任何非平凡字符串最多只能有一个构成......
  • springboot叙州区图书馆管理系统设计与实现---附源码60921
    摘 要图书馆作为知识传播和学术研究的重要场所,扮演着非常关键的角色。随着信息技术的快速发展和图书馆管理的日益复杂化,传统的手工管理方式已经无法满足现代图书馆的需求。因此,采用计算机技术和信息系统来辅助图书馆管理成为一种必要的选择。本系统的前端界面涉及的技......
  • 数组与字符串
    数组一维数组构造的数据类型之一,由若干数据类型相同的元素组成。其中数组名是地址常量不可修改,所以不能赋值操作,sizeof(数组名)求总内存空间。特点:数组不赋初始值,随机生成static修饰,默认位0部分赋值,其余默认为0//验证以上#include<iostream>usingnamespacestd;i......