字符串
2016-06-23 20:54
399 查看
1、定义:由字符数组构成的,并且以’\0’作为结束符,用“”包围起来的若干个字符(字符使用单引号‘c’,字符串使用双引号“hello world”)
2、字符数组:数组中的每一个元素都是字符,没有’\0’
3、区别:字符数组不需要以\0结束,字符串必须以\0结束
4、初始化:数组形式字符串默认数一个指针常量,指针形式字符串默认是一个常量指针
1)使用数组形式:char str[] = {‘h’,’e’,’l’,’l’,’o’,’\0’}; 数组名str->指针常量
数组内容可以被修改:str[0] = ‘H’; //存储在栈区
2)用字符串初始化一个字符数组:char str[] = “hello”;(默认有’\0’)
数组名str->指针常量 //存储在栈区
3)使用指针创建:char *str = “hello”;(最常用)->字符串常量(),内容不能被修改
常量指针:str指向字符串首元素地址。可以改变指向:str++
//存储在常量区
3)使用malloc开辟空间后拷贝:
char str = (char )malloc(20); //存储在堆区
strcpy(str,”hello”); //可以改变字符串内容和指针指向—>普通指针
… //str中也包涵’\0’
free(str);
str = NULL;
字符串输出%s,遇到’\0’后结束,后面的字符不会输出
5、字符串的操作函数
strcpy(str1,str2) //复制拷贝字符串—字符串数组不能复制,需要每个元素一个一个的赋值
strcmp(str1,str2) //比较字符串
strlen(str) //求字符串长度(不包含’\0’
strcat(str1,str2) //追加字符串
6、字符串数组:数组中存储每个字符串的首地址
例: char* week[] = {“monday”,”tuesday”};
12、字符串“ajsdhfowr123456asdkfd”最长连续字符串;
2、字符数组:数组中的每一个元素都是字符,没有’\0’
3、区别:字符数组不需要以\0结束,字符串必须以\0结束
4、初始化:数组形式字符串默认数一个指针常量,指针形式字符串默认是一个常量指针
1)使用数组形式:char str[] = {‘h’,’e’,’l’,’l’,’o’,’\0’}; 数组名str->指针常量
数组内容可以被修改:str[0] = ‘H’; //存储在栈区
2)用字符串初始化一个字符数组:char str[] = “hello”;(默认有’\0’)
数组名str->指针常量 //存储在栈区
3)使用指针创建:char *str = “hello”;(最常用)->字符串常量(),内容不能被修改
常量指针:str指向字符串首元素地址。可以改变指向:str++
//存储在常量区
3)使用malloc开辟空间后拷贝:
char str = (char )malloc(20); //存储在堆区
strcpy(str,”hello”); //可以改变字符串内容和指针指向—>普通指针
… //str中也包涵’\0’
free(str);
str = NULL;
字符串输出%s,遇到’\0’后结束,后面的字符不会输出
5、字符串的操作函数
strcpy(str1,str2) //复制拷贝字符串—字符串数组不能复制,需要每个元素一个一个的赋值
strcmp(str1,str2) //比较字符串
strlen(str) //求字符串长度(不包含’\0’
strcat(str1,str2) //追加字符串
6、字符串数组:数组中存储每个字符串的首地址
例: char* week[] = {“monday”,”tuesday”};
12、字符串“ajsdhfowr123456asdkfd”最长连续字符串;
#include <stdio.h> #include<string.h> char* lstr(char *str,char *longest); int main(int argc, const char * argv[]) { char *str = (char*)"ajsdhfowr123456asdkfd"; char longest[strlen(str)] ; longest[0] = '\0'; // printf("%ld",strlen(longest)); lstr(str,longest); printf("最长连续字符串为:%s\n",longest); return 0; } char* lstr(char *str,char *longest) { char temp[40] ; temp[0] = '\0'; int i = 0; int j = 0; while(j < strlen(str)) { if(j > 0 && ((str[j+1] == str[j] + 1) || (str[j] == str[j-1] + 1))) { temp[i] = str[j]; i++; } else { i = 0; } if(strlen(longest) < strlen(temp)) { strcpy(longest,temp); } j++; } return longest; }
相关文章推荐
- 单元测试
- hdu2047 阿牛的EOF牛肉串 多个递推式解法
- BZOJ_1619_[Usaco2008_Nov]_Guarding_the_Farm_保卫牧场_(模拟+bfs)
- Rsync命令详解
- Java IO流的一个小工具
- git 基本操作
- 解决centos7安装wmwaretools找不到kernel header
- item2,实现singleton模式
- hdu 2068 RPG的错排
- Java 4种方法实现选择排序算法
- Android SDK下载速度慢的解决方法(简单使用代理)
- HDU1257 最少拦截系统 贪心算法 (多人乘船问题)水题
- Android Studio项目目录结构介绍
- HTTP请求方法
- 数据库备份checksum选项你会用么?
- ubuntu启动无桌面图标?
- [HihoCoder]#1014 : Trie树
- Android命令行创建并运行 AVD模拟器
- Problem4-1001
- c++从int转string、char的方法总结