C语言基础--字符串

简介: C语言基础--字符串

前言


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]);

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


201c7f8ca77c47eb8ba78320158e1c26.png


a4457b0ff2a34c3db88438b7b797895d.png

3.2多个输出



二、字符串的创建


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


1.字符串的创建


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


把需要的内容存入数组里

还有一种是直接用双引号括起来


char arr1[] = "hello";

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

第一种方式在数组中的格式是这样的:

d36a36eac17c4a01b0965d60690d7e91.png


而第二种

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


2.字符串的输出


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

输出的结果

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

第一种输出方式


e051dd3015c24967bc337d7dc2df75bf.png



4776ff6961994f9993b392cf40afb41b.png

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

%s是以字符串形式输出

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


08a4eabb2a974d54b002ad9b0f054f5e.png


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

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


三、总结


关于C语言的字符串的创建就结束了。

简单总结就是:

1.字符串必须存放在数组中。

2.输出字符串就使用输出数组中的内容的方式就可以。

3.注意字符串创建方式和%s的用法。

目录
相关文章
|
3月前
|
NoSQL 程序员 Redis
C语言字符串的设计缺陷
C语言字符串的设计缺陷
39 1
|
8天前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
8天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
|
11天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
17天前
|
C语言
C语言 字符串操作函数
本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
|
1月前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
23 4
|
1月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
|
1月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
|
3月前
|
C语言
C语言学习笔记之初识字符串
C语言学习笔记之初识字符串
36 5
|
3月前
|
C语言
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
21 1