前言

C语言中,有整型、浮点型、指针类型和字符型,但没有字符串型,在有些语言中是存在字符型类型的。
例如(python),在python中可以直接给变量赋上一个字符串:

//声明字符串
str = "hello,worlde"

例如(java) ,在java中可以通过 String 类来声明字符串:

public class test{
public static void main(String[] args){
String s1 = "hello,world";
System.out.println("s1 = " + s1);
}
}

在Golang里也可以很好的创建字符串:

package main
import ("fmt")
func main(){
var str = "hello,world"
fmt.Println(str)
}

但是在C语言中我们没有这些原生的字符串类型或者是可以用的类方法,那C语言该如何创建字符串类型呢?


一、数组

在讲如何创建字符串前先简单讲一下数组的知识

1.一维数组的创建

一维数组的创建有两种方式,一种是静态创建,另一种是动态创建,在这里只是介绍一下,具体数组的知识可以查看我之前的文章。
动态数组的创建:

type arrname[number];

type:数组的类型
arrname:数组的名字
number:数组储存的大小

静态数组的创建:
静态数组的创建就是直接把值赋给数组,不表明这个数组的存储大小,计算机会自动计算这个数组的大小。

type arrname[] = {value1, value2,....};

在大括号里存放你要储存的值,如果是多个数据需要使用英文逗号分开。

2.数组的索引

学过python或者Java的小伙伴们应该知道,python里面的列表的索引是从0开始,但C里的数组是不能从负数开始的。C里面的数组和Java里的数组一样,索引是从0开始。
例如下面的代码:

#include <stdio.h>
int main(){
int arr1[] = {1,2,3,4};
return 0;
}

我在arr1这个数组里存放了4个int类型的数字,这个数组的索引如图所示

可以看到存放1位置的索引值为0,然后依次相加。

3.数组的调用

紧接着上面那个代码,我们要将里面的数值输出出来。

3.1 单个输出

我们可以使用

printf("%d", arr1[0]);

通过数组的索引值输出对应位置的内容

3.2多个输出



二、字符串的创建

在C语言中,字符串的创建就是在一个字符数组中存放很多字符,然后通过多行输出直接输出出来

1.字符串的创建

char arr1[] = {'h','e','l','l','o'};

把需要的内容存入数组里
还有一种是直接用双引号括起来

char arr1[] = "hello";

注意:这两种方法虽然都可以创建字符串,但两种创建方式是不一样的,
第一种方式在数组中的格式是这样的:

而第二种

第一种是直接把内容放进去,而第二种是在最后添加个\0

2.字符串的输出

第一种创建方式的输出只能使用遍历输出的方式,因为第一种创建方式最后没有\0

输出的结果

第二种创建方式可以使用两种输出方式
第一种输出方式


然后第二种方式我们可以使用%s修饰符来修饰输出

%s是以字符串形式输出

这种方式输出是可以把for语句省略的,但一定注意创建必须用第二种方式创建,否则就会出现下面这种情况


出现的原因是因为%s输出是以\0为结束的,如果在字符串中没有识别到\0则会一直输出下去,所以就会出现乱码。

等学到指针就会更明白这个问题出现的原因了

三、总结

关于C语言的字符串的创建就结束了。
简单总结就是:
1.字符串必须存放在数组中。
2.输出字符串就使用输出数组中的内容的方式就可以。
3.注意字符串创建方式和%s的用法。

C语言基础--字符串的更多相关文章

  1. 黑马程序员——C语言基础 字符串

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)字符串 1>字符串是由多个字符组合在一起形成的 2>初始 ...

  2. JAVA语言基础——字符串

    1.字符串的比较代码 String.equals System.out.println("str1和str2是否相同:"+(str1.equals(str2))); equals在 ...

  3. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  4. C语言基础:数组和字符串

    数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4 ...

  5. 程序设计入门-C语言基础知识-翁恺-第七周:指针与字符串-详细笔记(七)

    目录 第七周:指针与字符串 7.1 指针初步 7.2 字符类型 7.3 字符串 7.3 课后练习 第七周:指针与字符串 7.1 指针初步 sizeof 是一个运算符,给出某个类型或变量在内存中所占据的 ...

  6. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  7. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  8. C#语言基础

    第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...

  9. C语言基础回顾

    第一章 C语言基础 1.  C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...

  10. 【GoLang】GO语言系列--002.GO语言基础

    002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...

随机推荐

  1. 深谈Spring如何解决Bean的循环依赖

    1. 什么是循环依赖 Java循环依赖指的是两个或多个类之间的相互依赖,形成了一个循环的依赖关系,这会导致程序编译失败或运行时出现异常.下面小岳就带大家来详细分析下Java循环依赖. 简单来讲就是:假 ...

  2. TIM-PWM输出,占空比改变时机对输出波形的影响

    一.实验概述 以下说明描述三种改变PWM占空比的方式,对于当前PWM输出波形的影响 1.禁止预装载功能,在PWM某一周期波形输出过程中改变占空比值(ccp) 2.禁止预装载功能,在PWM某周期波形输出 ...

  3. 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)

    目标和(放满背包的方法有几种) 力扣题目链接(opens new window) 难度:中等 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在你有两个符号 + 和 -.对 ...

  4. 【Dotnet 工具箱】WPF UI - 现代化设计的开源 WPF 框架

    1.WPF UI - 现代化设计的开源 WPF 框架 WPF UI 是一个基于 C# 开发的, 拥有 4k star 的开源 UI 框架.WPF UI 在 WPF 的基础上,提供了更多的现代化,流利的 ...

  5. Springboot3整合使用ja-captcha行为验证码解决方案

    截止到目前,Springboot最新稳定版本已经迭代到3.0.5,而我们项目中使用的行为验证码框架ja-captcha还没有适配Springboot3,码云上类似的请求也没有得到过回应,于是决定自己动 ...

  6. CSS6大种选择器

    一.常用的css基本选择器(4种) 1.标签选择器 结构: 标签名{css属性名:属性值}作用:通过标签名,找到页面中所有的这类标签,设置样式 注意:1.标签选择器选择的是一类标签,而不是单独的一个2 ...

  7. [Opencv-C++] 1.1Opencv环境准备

    Opencv环境准备 一.Opencv各版本下载 二.安装: 1.先下载OpenCV的源码: 2.解压到服务器任意目录: 3.进入源码目录 4.事先安装下列软件 5.进入到cmake 6.cmake编 ...

  8. 2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x、y 的两个据点通过一条道路连接。 现在勇者要将按照以下原则将这些据点逐一夺回:

    2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x.y 的两个据点通过一条道路连接. 现在勇者要将按照以下原则将这些据点逐一夺回: ...

  9. uni-app 选择原因

    开发者.案例数量更多跨平台能力及扩展灵活性更强性能体验优秀周边生态丰富学习成本低开发成本低

  10. JVM原理剖析

    前言 本文讨论的JVM以JDK1.8为基准点,附带会横向比较,往前推到JDK1.6.JVM是任何一个学习JAVA的程序员绕不开的核心,本文就会围绕这个核心展开对它剖析,希望能给广大的程序员带来帮助. ...