C语言中字符串的存储方法

众所周知,C语言中没有数据类型能够存储字符串,char数据类型仅仅能够存储一个字符的数据,那么在C语言中关于存储字符串这一难题我们改何去何从呢?

下面将详述相关的字符串存储方法;

1、使用字符数组存;

[root@Qrui ruiy]#
#include<stdio.h>
int main(int argc,const char *argv[],const char **env[]) {

  char name[] = "qinrui";//定义一个字符数组,并初始化;
  char *cPoint;//定义一个指针;
  cPoint = name; //将指针指向数组;

  printf("%s\n",name);//使用指向数组的指针打印字符数组中的字符串;
  printf("%c\n",name[4]);//打印出字符数组的第5个字符,即u字符同上打印字符数组的第5个字符,但是使用的方法是指针的位偏移;
  printf("%c\n",*(cPoint+4));//作用
}

2、使用字符指针存储字符串;

 #include<stdio.h>
int main(int argc,const char *argv[],const char **env[]) {
  char *cPoint = "qinrui";
  printf("%s\n",cPoint);
}

总结:从上面2中C语言中的字符串存储的方法可以看出,使用字符数组可以打印字符串中的某个字符。但是字符指针却不可以。

3、可以把字符串a赋值给字符串b,但请注意字符串都是以\0结尾的;

字符指针变量指向格式字符串

char *format = "a = %d";

可以使用printf直接输出;

指针数组中每一个元素都是一个指针;其指向不同的区域,
指针相减得到 是相差的个数,而不是字节数;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c语言 数据结构实现之字符串

    c语言 数据结构实现之字符串 串采用定长顺序存储结构(由c4-1.h定义)的基本操作(13个),包括算法4.2,4.3,4.5   实现效果图: #include <stdio.h> #include <string.h> #include <malloc.h> // SString是数组,故不需引用类型 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 #define INFEASIBLE -1 #

  • C语言 字符串首字母转换成大写简单实例

    C语言 字符串首字母转换成大写简单实例 举例: 输入:this is a book 返回:This Is A Book #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char input[]="this is a book"; char output[256]={'\0'}; int i,len; len=strlen(input); printf("

  • C语言实现字符串操作函数的实例

    C语言实现字符串操作函数的实例 在编写程序的过程中,我们经常使用到一些字符串函数,例如求字符串长度,拷贝字符串--,这些函数都在C标准库中存在,我们可以直接使用.但我们还需要掌握这些函数的实现方法,今天来看看一些常用的字符串操作函数的实现方法. 1.strlen strlen是用来求字符串长度的函数,字符串长度就是它所包含的字符个数. 今天给大家介绍三种实现strlen函数的方法 (1)定义一个计数器count //方式一:定义一个计数器 size_t my_strlen(const char

  • C语言中字符串实现正序与逆序实例详解

    C语言中字符串实现逆序实例详解 字符串逆序和正序的实现代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <malloc.h> #include <string.h> /*定义*/ typedef struct node { char c; struct node *llink,*rlink; }stud; /*建立链表*/ stud * creat(voi

  • 详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法

    详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法 由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与UnsafeMutablePointer类型,分别对应为const Type*类型与Type *类型. 而在Swift编程语言中,由于一般数组(Array)对象都无法直接用于C语言中含有指针类型的函数参数(比如:void*),所以往往需要

  • C语言中函数返回字符串的方法汇总

    在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己使用.同样return返回时,如果返回一个值,函数会将该值拷贝一份以提供给主调函数使用,返回的是一个指针(也就是地址),自然拷贝的就是一个地址,供主调函数使用. 先给出一个错误的例子: #include <stdio.h> #include <strin

  • C语言判断字符串是否以str2开头代码

    代码很简洁,功能也很简单,这里就不多废话了,直接把代码奉献给大家,有需要的小伙伴可以来参考下 #include <stdlib.h> #include <string.h> #include <stdio.h> /**判断str1是否以str2开头 * 如果是返回1 * 不是返回0 * 出错返回-1 * */ int is_begin_with(const char * str1,char *str2) { if(str1 == NULL || str2 == NULL

  • C语言中字符串的存储方法

    众所周知,C语言中没有数据类型能够存储字符串,char数据类型仅仅能够存储一个字符的数据,那么在C语言中关于存储字符串这一难题我们改何去何从呢? 下面将详述相关的字符串存储方法; 1.使用字符数组存; [root@Qrui ruiy]# #include<stdio.h> int main(int argc,const char *argv[],const char **env[]) { char name[] = "qinrui";//定义一个字符数组,并初始化; cha

  • Go语言中字符串的查找方法小结

    1.func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true 复制代码 代码如下: import (  "fmt"  "strings" ) func main() {  fmt.Println(strings.Contains("widuu", "wi")) //true  fmt.Println(strings.Contains("wi

  • c语言中字符串分割函数及实现方法

    1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

  • c语言中字符串与字符串数组详解

    目录 字符串 字符串输出 输入字符串 字符串常用方法 字符串数组 总结 字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,没有\0就不是字符串 只要是用双引号括起来的都是字符串 字符串的本质就是数组 注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素个数比字符数组的元素多一个\0 #include <stdio.h> int main(int argc, const ch

  • 在Go语言中使用JSON的方法

    Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interface{}) ([]byte, error) Marshal函数将会递归遍历整个对象,依次按成员类型对这个对象进行编码,类型转换规则如下: bool类型 转换为JSON的Boolean 整数,浮点数等数值类型 转换为JSON的Number string 转换为JSON的字符串(带""引号) struct 转换为JSON的Object,

  • C语言中字符串与各数值类型之间的转换方法

    C语言的算法设计中,经常会需要用到字符串,而由于c语言中字符串并不是一个默认类型,其标准库stdlib设计了很多函数方便我们处理字符串与其他数值类型之间的转换. 首先放上一段展示各函数使用的代码,大家也可以copy到自己的机器上运行观察 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int num=183; char str[3]; //itoa函数将整型转换为字符串数值类型 it

  • C语言中数据如何存储进内存揭秘

    目录 内存简单介绍 整数与字符在内存中的存储 浮点数在内存中的存储 大小端存储模式及简介 总结 内存简单介绍 大家肯定经常听说内存这个词,内存到底是什么呢? 在计算机中,进程都要加载进内存中,也是我们各种数据的流通途径,C语言中,大家肯定都知道指针变量,指针变量中保存的就是内存的地址,那么,什么是内存的地址呢? 内存的单位是字节 对于32位的机器,有32根地址线,每根地址线在寻址时,产生的高低电压分别为0/1,那么32根地址线产生的地址就会是 00000000000000000000000000

  • 深度解密Go语言中字符串的使用

    目录 Go 字符串实现原理 字符串的截取 字符串和切片的转换 字符串和切片共享底层数组 什么是万能指针 字符串和其它数据结构的转化 整数和字符串相互转换 Parse 系列函数 Format 系列函数 小结 Go 字符串实现原理 Go 的字符串有个特性,不管长度是多少,大小都是固定的 16 字节. package main import (     "fmt"     "unsafe" ) func main() {     fmt.Println(         

  • Go语言中节省内存技巧方法示例

    目录 引言 预先分配切片 结果 结构体中的字段顺序 极端情况 使用 map[string]struct{} 而不是 map[string]bool 结果 引言 GO虽然不消耗大量内存,但是仍有一些小技巧可以节省内存,良好的编码习惯是每一个程序员都应该具备的素质. 预先分配切片 数组是具有连续内存的相同类型的集合.数组类型定义时要指定长度和元素类型. 因为数组的长度是它们类型的一部分,数组的主要问题是它们大小固定,不能调整. 与数组类型不同,切片类型无需指定长度.切片的声明方式与数组相同,但没有数

  • Go语言中普通函数与方法的区别分析

    本文实例分析了Go语言中普通函数与方法的区别.分享给大家供大家参考.具体分析如下: 1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然. 2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以. 以下为简单示例: 复制代码 代码如下: package structTest    //普通函数与方法的区别(在接收者分别为值类型和指针类型的时候)  //Date:2014-4-3 10:00:07    import ( 

随机推荐