黑马程序员_iOS_C_字符串

原创 2015年11月18日 00:30:11

——- android培训java培训、期待与您交流! ———-

1.字符串的基本概念
字符串是位于双引号中的字符序列。
在内存中以“\0“结束,所占字节比实际多一个。

//字符串"abcd"的内存存储情况
 ________________________
|  a |  b | c  |  d | \0 |
|____|____|___ |__ _| ___|

注意:
1)可以把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋值给字符变量。
2)c语言中没有字符串变量,可以用字符数组来存放字符串。

char ch[10] = "abc";

2.字符数组定义
格式:char 数组名[常量表达式]

char ch[10];

字符数组也可以是二维或多维数组
格式:char 数组名[常量表达式1][常量表达式2]

char ch[5][5];

注意:定义字符数组时,应确保数组长度比字符串长度至少多1。

1)一维字符数组的定义
char ch1[10];
2)二维字符数组的定义
char ch2[10][10];

3.字符数组初始化和引用
1)初始化

//定义同时初始化
char ch[4] = {'a','b','c','d'};
char ch[] = {'a','b','c','d'};

char ch[3] = {'a'};//a  \0  \0
char ch[3] = {[3] = 'b'};
//先定义后初始化
char a[3];
a[0] = 'a';
a[1] = 'b';
a[2] = 'c';

2)引用(遍历)
3)字符数组用来保存字符串的
字符数组作用:保存字符和保存字符串

//字符数组保存字符串,末尾保存'\0'
char str[4] = {"abc"};
//str[0] = 'a';
//str[1] = 'b';
//str[2] = 'c';
//str[3] = '\0';
//第二种初始化方法
char str[4] = "abc";//注意,此处数组长度必须大于等于4;
char str[] = "abc"

4.以字符串的形式输入和输出
使用各式字符串为%s,表示输入、输出的是一个字符串。

//%s从给定的地址开始,输出字符直到遇到\0
char ch[] = "abcdefg";
printf("%s",str);
printf("%s",&str[0]);
//%s接收键盘上输入的一个字符串
char str[10];
//从键盘上接受一个字符串,保存在以str为首地址的字符数组中
scanf("%s",str);
//把字符数组以%s的格式输出
printf("%s\n",str);

注意点:
1)如果以%s格式进行输入的话,注意空格问题,如果输入的字符串有空格,则空格之后的字符无法被接受保存。
2)输入字符串的长度要小于字符数组的长度。
5.字符串结束符使用

//定义一个字符串  
char str[] = "abc";
//str[0]   a
//str[1]   b
//str[2]   c
//str[3]   \0
print("%d",sizeof(str));//4
//存的是字符,可以以%s输出
char ch[] = {'a','b','\0'};
printf("%s",ch);

6.字符串长度计算的方法

//字符串的长度
//此处字符串的长度恰好等于数组在内存中占用的字节数
char str[] = "abc";
printf("%d",sizeof(str));//4

char str[] = "abc\0def";
printf("%d",sizeof(str));//8
//专门计算字符串长度的方法
//1)使用字符串函数
//strlen(str)
//2)以'\0'作为条件进行判断,遇到'\0'就结束,'\0'之前就是字符串的长度
//不知道
char str[] = "abcdefghijd";//包含'\0' // 4   不包含'\0'   //3
int i = 0;//int i = 1;包含'\0'
while(str[i]!='\0'){
    i++;
}
printf("%d\n"i);//3

7.字符数组和普通数组的区别
没有本质区别。
1)字符数组元素都是char型。
2)scanf()和printf()函数有一种格式符%s可以用输入输出字符数组。
3)字符数组可以这样初始化:char str[] = “abcdefg”;
8.字符串处理函数
需要到的头文件:”stdio.h”,”string.h”。

//"stdio.h"
//puts()  输出一个字符串(可以自动换行)
printf("%s\n",str);
puts(str);//任意元素地址//不可以格式化输出

//gets()  输入一个字符串
scanf("%s",str);//注意:输入字符串的时候不能有空格
gets(str);//可以接受空格,但是不安全,有越界危险

//"string.h"
//strcat()  连接一个字符串
//strcat(A,B)  将B连接到A后面,会覆盖掉A的\0
//A的长度要足够大
char str1[100] = "aaa";
char str2[] = "bbbbbbb";
//string.h
//strcopy   字符串拷贝函数
//strcopy(oldStr,newStr)    newStr覆盖掉oldStr  
strcopy(str1,str2);//str1要足够大(可能越界)

//strcmp    字符串的比较函数
//规则:比较字符的ascii码值
//逐个字符相比较,出现第一个不相同就开始确定大小
strcmp(str1,str2);//返回值 大于0  str1>str2  等于0  小于0 

//strlen    字符串的长度计算函数
//长度不含\0

相关文章推荐

黑马程序员——Objective-C程序设计(第4版)学习笔记之15-数字、字符串和集合——黑马 IOS 技术博客

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 这章开始讲必经常用的基本对象:数字、字符串和集合。 #import ...

黑马程序员------[C]字符串操作

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 第十篇 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流...

黑马程序员—C学习笔记—指针字符串与其内存细节

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流! 本节涉及到指针字符串和数组字符串的存储等基本问题,涉及很多细节,详细变化请参考代码,谢谢。...

黑马程序员—C学习笔记—补充字符串总结(定义、赋值、sizeof、strlen)

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流! 前面有两节已经写到字符串了,今天做一个补充总结(定义、赋值、sizeof、strlen)。...

黑马程序员—C学习笔记—字符串匹配和scanf函数bug解决

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流! 在这里,实现了用目标字符或字符串去另外一个字符串中进行匹配,并且返回匹配成功地次数。在输入过程中遇到咯scanf函数...

黑马程序员——IOS基础——Foundation框架——结构体、字符串、数组

// // main.m // 01-结构体 // // Created by CH on 14-4-11. // Copyright (c) 2014年 itcast. All rights...
  • kldxcr
  • kldxcr
  • 2014年04月11日 12:22
  • 691

黑马程序员——IOS基础(字符串)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、用一维字符数组存放字符串      c语言本身并没有设置一种类型来定义字符串变量...

黑马程序员—(iOS开发)C语言字符串及预处理---(六)

------- iOS培训、PHP培训、android培训、java培训、期待与您交流! ---------- ...

黑马程序员-IOS学习笔记 c实现 推箱子游戏

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!------- #define kRows 10 #define kCols 11 /* ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_iOS_C_字符串
举报原因:
原因补充:

(最多只允许输入30个字)