C语言字符串

一、字符串基础

注意:字符串一定以\0结尾。

Printf(“yang\n”);

其中yang为字符串常量,“yang”=‘y’+‘a’+‘n’+‘g’+‘\0’。字符串由很多的字符组成,通常使用字符数组来存储字符串,如char name[10]=“yang”;也可以以printf(name);的形式输出,即通过数组来访问字符串,但会有警告。因为默认情况下,printf函数只接受字符串常量作为参数(对变量并未写明)。

字符串的三种写法:

  1. Char name[8]=“yang”;//数组占用了8个字节的存储空间,但是只含有5个字符。
  2. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘\o’};
  3. Char name[8]={‘y’+‘a’+‘n’+‘g’+‘0’};

这三种写法在内存中的表现都是一样的。

Char name[]={‘y’+‘a’};前面不写个数,不是一个字符串,只能说是一个普通的字符数组。

char name[]=“yang”;

Name[1]=‘o’;把字符串的第二个元素值由a改成o。

二、字符串使用注意点

(1)分析代码,了解\0的作用。

Char name[]=“yang”;

Char name2[]={‘o’+‘k’};

Printf(“name2=%s”,name2);

%s:根据右边的参数,打印字符串(遇到\0为止)

上面代码的打印结果为:okyang

下面是内存情况分析:

问1:Char name[]=“y\0ng”;则打印结果为什么?(oky)

问2:此时打印name的值,使用%s是多少?Y\0ng还是y?

(2)Strlen函数

Strlen函数计算字符串的长度(字符数)但不包括\0,是字符数不是字数。比如一个汉字占三个字符。

Strlen(“haha”);//长度为4

Strlen(“哈haha”);//长度为7而不是5

char name[]=“it\0cast”;

Strlen(name);值为2,因为strlen从字符串的地址开始计算,直到遇到\0为止。

假设

Char name[]=“itcast”;

Char name2[]={‘o’+‘k’};

Int size=strlen(name);

此时size的值为8。

(3)练习,编写一个函数char_contains(char str[],char c),如果字符串中包含字符c,则返回1,否则返回0。

Int char_contains(char str[],char c)

{

//遍历整个字符串

For(int i=0,i<strlen(str);i++)

{

If(str[i]==c)

Return 1;

}

Return 0;

}

//调用语句

Int result=char_contains(“yang”,‘a’);

//使用while循环

①. While(i<strlen(str))

②. While(str[i]!=‘\0’)

③. While(str[i])

④. Int i=-1;while(str[i++])

三、字符串数组

二维字符数组,存储两个字符串数组,每个的长度为1,下面是两种写法但存储情况是一样的。

Char name[2][10]={“jack”,“rose”};

Char name2[2][10]={

{‘j’+‘a’+‘c’+‘k’+‘\0’},

{‘r’+‘o’+‘s’+‘e’+‘\0’}

}

把rose输出:printf(“%s”,name2[1]);

输出k:printf(“%c”,name2[0][3]);

李洪强-C语言2-字符串相关推荐

  1. c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量

    一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储 ...

  2. 李洪强-C语言5-函数

    C语言函数 一.函数 C语言程序是由函数构成的,每个函数负责完成一部分的功能,函数将工恩呢该封装起来,以供程序调用. 二.函数定义 目的:将一些常用的功能封装起来,以供日后调用. 步骤:确定函数名,确 ...

  3. 李洪强漫谈iOS开发[C语言-038]-if else if语句

    李洪强漫谈iOS开发[C语言-038]-if else if语句

  4. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

  5. 李洪强经典面试题146-网络

    李洪强经典面试题146-网络   网络 http请求方式? 通常,HTTP的请求方式有3种,分别是:POST.GET.HEAD.POST和GET方法是用于数据发送的. POST:它将要发送的数据单独放 ...

  6. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  7. 李洪强iOS经典面试题144-数据存储

    李洪强iOS经典面试题144-数据存储   数据存储 sqlite中插入特殊字符的方法和接收到处理方法. 除'其他的都是在特殊字符前面加"/",而 ' -> '' .方法:k ...

  8. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  9. 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理

    李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理 问题 简单介绍 ARC 以及 ARC 实现的原理. 考查点 ARC 是苹果在 WWDC 2011 提出来的技术,因此很多新入行的 ...

最新文章

  1. 量化因果涌现表明:宏观可以战胜微观
  2. android动画回到原位,使用动画隐藏view后,原来的位置空白
  3. 《PHP综合开发环境》(NuSphere PhpED v5.6.5615 Win32)[压缩包]
  4. 尼康G镜头与D镜头的差别
  5. 【主席树】可持久化数组(金牌导航 可持久化数据结构-3)
  6. 哈希表的key的类型(传值与传引用)
  7. 【英语学习】【WOTD】ecstatic 释义/词源/示例
  8. 6-4 开班简介1
  9. paip.解决中文url路径的问题图片文件不能显示
  10. 开源免费的录屏gif工具
  11. HDMI CEC HDCP
  12. 浅谈CFD(constant fraction discriminator恒比鉴相器)
  13. SQL 嵌套 N 层太长太难写怎么办?
  14. Laplance算子(二阶导数)
  15. Bluetooth sco协议录音
  16. 博士申请 | 杜克大学徐攀老师招收机器学习/人工智能方向全奖博士生
  17. NSG44273低侧驱动IC
  18. [费用流]2018 Multi-University Contest 10 L.Videos
  19. JavaScript 的DOM对象
  20. JS实现网站悬浮广告

热门文章

  1. php数组的声明和类型
  2. c++运算符优先级总结
  3. 僵尸进程的产生,危害和解决方案
  4. 对pthread_create未定义的引用
  5. C++Primer学习笔记:第7章 类
  6. gets fgets 区别
  7. 【Verilog HDL】第三章 reg和net及其一组类型的区别——充分运用实验思维
  8. 三年Java开发,java基础常问面试题
  9. Java开发环境!java写猜数字小游戏
  10. 这个回答让我错失offer!成功收获美团,小米安卓offer