前言

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. 微服务为什么要用到 API 网关?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者程小兰,API7.ai 技术工程师,Apache APISIX Contrib ...

  2. 五天学会Deep Learning

    五天学完deep learning......是时候来证明chatGPT和new bing的能力了...... DAY1 Sigmoid function Sigmoid 函数是一种常用的激活函数,它 ...

  3. 关于Java中对象的向上转型和向下转型

    什么是多态? 同一个类调用同一个方法会产生不同的影响/结果 这就是多态 public class Pet{ public void eat(){ System.out.println("Pe ...

  4. .NET开源分布式锁DistributedLock

    一.线程锁和分布式锁 线程锁通常在单个进程中使用,以防止多个线程同时访问共享资源. 在我们.NET中常见的线程锁有: 自旋锁:当线程尝试获取锁时,它会重复执行一些简单的指令,直到锁可用 互斥锁: Mu ...

  5. RocketMQ的简单使用

    大家好,我是Leo!今天来和大家分享RocketMQ的一些用法. 领域模型介绍 Producer: 用于生产消息的运行实体. Topic: 主题,用于消息传输和存储的分组容器. MessageQueu ...

  6. 云原生时代崛起的编程语言Go常用标准库实战

    @ 目录 基础标准库 简述 字符串-string 底层结构 函数 长度 格式化输出 模版-template text/template html/template 正则表达式-regexp 编码-en ...

  7. Requested setting LOGGING_CONFIG, but settings are not configured

  8. Django date

    date根据给定格式对一个日期变量进行格式化. 可用的格式字符串: 格式化字符 描述 示例输出a 'a.m.'或'p.m.' 'a.m.'A 'AM'或'PM' 'AM'b 月份,文字形式,3个字母, ...

  9. cve_2020_6507分析

    poc $ cat poc.js array = Array(0x40000).fill(1.1); args = Array(0x100 - 1).fill(array); args.push(Ar ...

  10. Weblogic反序列化(CVE-2023-21839)漏洞复现

    前言 序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程,一般将对象转换为字节流.序列化时,对象的当前状态被写入到临时或持久性存储区(文件.内存.数据库等). 反序 ...