C语言自学完备手册(24)——字符串(1)

版权声明: https://blog.csdn.net/lfdfhl/article/details/83056581

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


讲给Android程序员看的前端系列教程(图文版)
讲给Android程序员看的前端系列教程(视频版)
Android程序员C语言自学完备手册


版权声明


字符串概述

字符串就是字符序列,通常将字符串置于双引号之间。例如:“ABC"就是一个字符串,双引号之中的值被称为字符串字面量(string literal),双引号中可以没有字符,可以只有一个字符,也可以有很多个字符。在字符串字面量的末尾会被自动加上一个叫做null的字符,且该null字符的值为0(用八进制转义字符表示为‘\0’)。如果在双引号中没有任何字符即” “,那么该字符串字面量” "表示的就是null字符,如下图所示:

在这里插入图片描述

由上图可知:"ABC"实际上占用了4个字符的内存空间。在此,再次强调:null是一个字符,用八进制转义字符表示为‘\0’,若用整数常数来表示就是0;切勿将其与字符‘0’或者字符串“0”混淆!


字符串字面量长度

字符串字面量长度即字符串所占的内存空间的大小,可用**sizeof( )**求该值,代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k,l;
    i=sizeof("123");
    printf("i=%d\n",i);
    j=sizeof("");
    printf("j=%d\n",j);
    k=sizeof("AB\tC");
    printf("k=%d\n",k);
    l=sizeof("abc\0def");
    printf("l=%d",l);
    return 0;
}

结果如下:

i=4
j=1
k=5
l=8
Process returned 0 (0x0) execution time : 0.524 s
Press any key to continue.


字符串字面量生命周期

先来看一段非常简单的代码:

扫描二维码关注公众号,回复: 3808759 查看本文章
#include <stdio.h>
#include <stdlib.h>

int func(void)
{
   puts("ABCD");
    return 0;
}

该函数中将“ABCD”显示到控制台。调用该函数时必须将字符串字面量"ABCD"传入函数puts( )中。因此,字符串字面量"ABCD"就必须"活在"程序开始到结束的整个生命周期内。也就是说:字符串字面量自然被赋予了静态生命周期


字符串的存储

字符串最适合存放于char数组中。 请看如下示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[4];
    str[0]='A';
    str[1]='B';
    str[2]='C';
    str[3]='\0';
    printf("字符串str为%s\n",str);
    return 0;
}

结果如下:

字符串str为ABC

在该示例中:将A、B、C三个字符赋值给字符数组char[4]中的各个元素,再将\0赋值给str[3]表示字符串的终止。另外,printf( )函数中表示字符串的转换说明为s%,实参传递的是数组名

当然,示例中存储字符串的方式有些繁琐了,我们还可以按照以下方式进行:

char str[4]={'A', 'B', 'C', '\0'};

请不要忘记该数组末尾最后的字符‘\0’。假若写成了:

char str[4]={'A', 'B', 'C'};

那么该变量str不会被当做字符串,只是普通的字符数组。

关于字符串的声明还可以这么写:

char str[4]=“ABC”;

该方式是在实际开发中非常常见和经常使用的。


字符串的读取

接下来学习:如何从键盘读入字符串,代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char nameString[20];
    printf("请输入您的名字:");
    scanf("%s",nameString);
    printf("您的名字是:%s\n",nameString);
    return 0;
}

结果如下:

请输入您的名字:lilei
您的名字是:lilei

要点概述:

  • 为了从标准输入流中读取字符串,需要把scanf( )函数的转换说明设置为%s
  • 传递给scanf( )函数的实参name是不带&符号的
  • scanf( )函数将从键盘读取到的字符串存储到数组中并在其末尾加上null字符

字符串的格式化显示

请看如下示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[]="12345";
    //原样输出字符串
    printf("%s\n",str);
    //至少显示3位
    printf("%3s\n",str);
    //最多显示3位
    printf("%.3s\n",str);
    //右对齐
    printf("%8s\n",str);
    //左对齐
    printf("%-8s\n",str);
    return 0;
}

结果如下:
在这里插入图片描述

转换说明:
在这里插入图片描述
在这里插入图片描述

具体的转换说明请在使用时再次查询官方文档。

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/83056581
今日推荐