一、字符串与字符串数组

  1、字符数组的定义

    char array[100];

  2、字符数组初始化

    char array[100] = {'a','b','c'};  //array[0] = 'a'    array[10] = 0

    char aray[100] = "abcdef";

    char aray[100] = {0};

    char aray[] = "qwertyuiop"; //未指定长度时,根据字符串长度自动填写。

  3、sizeof()方法 查看数组的字节长度 

    例如:

#include<stdio.h>
int main(void)
{
char a[] = "asdfg";
int len = sizeof(a);
printf("数组a的长度为:%d",len); //数组a的长度为:6 --> "asdfg\0"(实际上字符串以数字0结尾)
return ;
}

  4、字符数组的使用

    例一:排序  

#include<stdio.h> 

int main(void)
{
char a[] = "befacd";
char i,j,temp;
for(i=;i<sizeof(a)-;i++)
{
for(j=;j<sizeof(a)--i;j++)
{
if(a[j-]>a[j])
{
temp = a[j-];
a[j-] = a[j];
a[j] = temp;
}
}
}
printf("%s\n",a); // 输出: abcdef return ;
}

     例二:字符串倒置(首尾倒置)

#include<stdio.h>
int main(void)
{
char str[] = "hello world";
int i = ;
while(str[i++]) ;
int len = i-; //字符串有效长度
int min = ;
int max = len-; // 下标最大值
while(min<max)
{
char temp = str[min];
str[min] = str[max];
str[max] = temp;
min++;
max--;
}
printf("%s\n",str); // 输出: dlrow olleh
return ;
}

    例三:汉字首尾逆置

#include<stdio.h>
int main(void)
{
char b[] = "你好!明天"; //每个中文字符在gbk编码中占两个字节
int i = ;
while(b[i++]) ; //不断遍历字符串,直至遇到末尾的0,退出
i--; // 字符串的有效长度
int min = ;
int max = i-;
while(min<max)
{
char tmp;
tmp = b[min]; //调换第一个字节和倒数第二个字符
b[min] = b[max-];
b[max-] = tmp; tmp = b[min+]; //调换第二个字节和最后一个字符
b[min+] = b[max];
b[max] = tmp; min += ;
max -= ;
}
printf("倒置后的字符串:%s\n",b); // 倒置后的字符串:天明!好你 return ;
}

    例四:混合统计汉字和ASCII字符串字符  

#include<stdio.h>
int main(void)
{
char str[] = "厉害了,MyCountry!";
int len_e = ;
int len_c = ;
int sum = ;
int i,j;
while(str[i])
{
if(str[i]<)
{
len_c += ;
i += ;
}
else{
len_e += ;
i += ;
}
}
sum = len_c+len_e;
printf("中文字符:%d,英文字符:%d,所有字符总数:%d",len_c,len_e,sum); //中文字符:4,英文字符:10,所有字符总数:14
return ;
}

    例五:去除字符串右边的空格

#include<stdio.h>
int main(void)
{
char c[] = "hello ";
int i = ;
int len,j;
while(c[i++]) ;
len = i--;
for(j=len;j>;j--)
{
if(c[j]!=' ')
{
c[j++]=;
break;
}
}
printf("取掉末尾的空格后的字符串:%s\n",c); //取掉末尾的空格后的字符串:hello
return ;
}

    例六:去除字符串前面的空格

#include<stdio.h>
int main(void)
{
char s[] = " hello,boy";
int count = ; //统计空格长度
int i;
while(s[count++]==' ') //遍历空格
count--; //取得空格数量
i = count; //字符开始位置
while(s[i])
{
s[i-count] = s[i]; //第一个字符赋给第一个位置
i++;
}
s[i-count] = ; //字符串最后赋0
printf("去除空格后的字符串:%s\n",s); return ; }

   4、数组总结

    1、数组的本质就是一次定义多个类型相同的变量,同时一个数组中所有的元素在内存中都是顺序存放的。
    2、char s[100] ;s[0]-->s[99],切记没有s[100]这个元素。并且c语言编译器不会帮你检查下标是否有效。
    3、字符串一定是在内存中以0结尾的一个char数组。

    

    

c语言之字符串数组的更多相关文章

  1. c语言中字符串数组初始化的一点总结&& c++访问控制的三种方式

    char *c[]={"ONE","TWO","THREE","FOUR"}; // c语言中定义了一个字符串数组(也称 ...

  2. 【学习笔记】【C语言】字符串数组

    1.使用场合 * 一维字符数组中存放一个字符串,比如一个名字char name[20] = "mj" * 如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,cha ...

  3. C语言计算字符串数组中每个字符串出现的个数

    unsigned int str_num(char *str[], int num[], int len) { int i, j; int count; int flag[len]; ; i < ...

  4. C语言char*字符串数组和unsigned char[]数组的相互转换

    #include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* ...

  5. C语言中字符串数组的遍历和比较

    /* The list of known types of default packet. */static char  *_default_packet_types[] = {    "d ...

  6. C语言学习018:strdup复制字符串数组

    在C语言学习005:不能修改的字符串中我们知道字符串是存储在常量区域的,将它赋值给数组实际是将常量区的字符串副本拷贝到栈内存中,如果将这个数组赋值给指针,我们可以改变数组中的元素,就像下面那样 int ...

  7. C语言基础:数组和字符串

    数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4 ...

  8. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  9. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

随机推荐

  1. L144

    Puny Dwarf Planet, Named 'Goblin,' Found Far Beyond PlutoA scrawny dwarf planet nicknamed "the ...

  2. 如何在100万文字的文章中 200ms内 快速提取 替换 上万个关键字

    关键点: 关键字 组合 成一棵 hash 树  ( 有属性就直接移动指针到下一个字对象, 没有属性就创建子对象, 再移动指针;  第二次循环在子对象看有没这个属性 ) 探测针       标记结束   ...

  3. linux进程通信全面解析

      进程IPC 的 7种方式 linux下 进程通讯IPC的方式主要有以下7种: 1.文件 2.共享内存 3.信号 4.管道 5.套接字 6.消息列队 7.信号量   以下正文 中 一一 分析下: 1 ...

  4. Proposition

    提供 \(k\) 个变量 \((k\leq 4)\) 可独立取值为 \(0,1\),两种运算分别等价于 \(\neg a\) 和 \(\neg a \lor b\) . 你需要恰好使用 \(n\) 个 ...

  5. BZOJ3507 [Cqoi2014]通配符匹配

    题意 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号("*"),可以匹配0个及以上的任意字符:另一个是问号(" ...

  6. Jam的计数法

    Jam的计数法 题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数 ...

  7. Git克隆、修改、更新项目,及查看项目地址命令

    第一步:在本地新建一个文件夹,作为本地仓库,如“texzt”,直接打开该文件夹,并单击右键,选择git bash here 则可以直接进入到该文件夹目录下. 第二步:将本地仓库初始化,命令:git i ...

  8. Python的Django框架中if标签的相关使用

    {% if today_is_weekend%} {% end if %} 系统会显示在这之间的内容 {% else %}标签是可选的 在python和django模板系统中,以下对象相当于布尔值的F ...

  9. 深入学习Web Service系列----异步开发模式

    概述 在本篇随笔中,通过一些简单的示例来说一下Web Service中的异步调用模式.调用Web Service方法有两种方式,同步调用和异步调用.同步调用是程序继续执行前等候调用的完成,而异步调用在 ...

  10. Python reload() 函数

    reload(module) 作用: 用于重新载入之前载入的模块. module -- 模块对象.返回模块对象. 实例:  重新载入 sys 模块,并设置默认编码为 utf8 >>> ...