首页 > 其他分享 >嵌入式学习——C语言字符数组及其函数

嵌入式学习——C语言字符数组及其函数

时间:2024-07-18 19:54:05浏览次数:16  
标签:字符 函数 嵌入式 char 数组名 数组 字符串 C语言

目录

一、字符数组

        1、定义

        2、初始化                

        3、引用字符数组元素

二、字符串和字符串结束的标志

三、字符数组的输入输出

        1、字符串的输入:scanf

        2、注意事项

四、字符串处理函数

        1、puts函数

        2、fgets函数 

        3、strcat函数

        4、strcpy函数

        5、strcmp

        6、strlen函数


一、字符数组

        1、定义

                1)用于存放字符型数据的数组称为字符数组。

                2)在C语言中,字符数组中的一个元素只能存放一个字符。                

        一般形式:                

                1)char 数组名 [常量表达式];                           一维字符数组

                2)char  数组名[常量表达式1][常量表达式2];   二维字符数组

        2、初始化                

char  c[10]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};
char diamond[5][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};

                注意:① 如果定义时不初始化,元素值不确定;

                            如果提供的字符个数大于数组长度,则按语法错误处理;如果字符个数小于数  组长度,后面的元素自动为空字符(‘\0’);

                            如果提供的字符个数与数组长度相同时,可省略数组长度,系统会自动确定元  素个数。适合字符个数较多时。

         字符数组的初始化可以用字符串常量来初始化          

char [10] = "hello";
//要注意这个字符串的长度为5,但是它需要6个数组长度,因为字符串会有一个'\0'结束符

                区分初始化和赋值的概念:
                
字符数组只能逐个赋值,不能一次性进行赋值

char ch [] = "Hello";             //初始化
char ch[10];    ch = "hello";    //error,报错

        3、引用字符数组元素

                引用字符数组中的一个元素,得到一个字符。

                例:输出一个字符串。            

#include <stdio.h>
void main()
 {char c[11]={'I',' ','a','m',' ','a',' ','b','o','y','.'};
   int i;
  for(i=0;i<11;i++)
      printf("%c",c[i]);
  printf("\n");
} 

                输出结果为:I am a boy

二、字符串和字符串结束的标志

        1、C语言规定,字符串以字符'\0'作为结束标志

        2、 编译系统对字符串常量自动加一个'\0'作为结束标志

        3、 程序中往往通过判断'\0'来检测字符串是否结束

        4、 '\0'的ASCII码为0,不是一个可显示的字符,是“空操作符”,什么都不做,不会增加有效字符,仅是一个供判别的标志

三、字符数组的输入输出

        1、字符串的输入:scanf

              格式符 %c用于输入输出一个字符。

              格式符 %s用于输入输出一个字符串。

              例:char ch[10]; scanf("%c",&ch[0]);                          //需要循环输入

                     char ch[10]; scanf("%s",ch); printf("%s\n",ch)      //字符串输入

              注意:采用scanf输入字符串的时候,要求字符串不能有空格,否则字符串遇到空格就结束了。

        2、注意事项

                1)在用格式说明符%s为字符型数组输入数据时, 字符串的分隔符是空格符,因此,如果在输入的字符串中包括空格符时,只截取空格前的部分作为赋给字符数组的字符串。

                 2)在为字符型数组输入字符串时,输入字符串的长度不要大于数组的长度,否则越界系统不提示,用户自己负责。特别要注意的是,字符串中还有一个字符串结束符,它虽然不计入字符串的长度中,但它实际需要占一个字节空间(即占一个字符元素的空间)。

四、字符串处理函数

        1、puts函数

                功能:输出一个字符串。(字符串中可以包含转义字符)

                使用方法:puts(数组名)        

char str[ ]  = "hello!\nHow are you!";
puts(str);

       

        2、fgets函数 

                功能:从键盘输入一个字符串到字符数组,并返回字符数组的地址。

                使用方法:fgets(字符数组名,数组大小,stdin)

include <stdio.h>                                                                                                       
int            
int main()
{
        char s[80];
        printf("输入数据");
        fgets(s,80,stdin);
        printf("输出数据");
        puts(s);

        return 0;
}

        3、strcat函数

                功能:将字符串2连接到字符串1的后面,并返回字符串1的地址。

                使用方法:strcat(字符数组1,字符串2)

                注意:① 字符数组1的长度必须足够大,以便能容纳被连接的字符串。    

                            连接后系统将自动取消字符串1后面的结束符'\0'。    

                           ③ “字符串2”可以是字符数组名,也可以是字符串常量,如:strcat(s1,"cdef")。

char  s1[20]= "abcd";
char  s2[ ]="cdef";
printf("%s\n",strcat(s1,s2));

        4、strcpy函数

                功能:字符串2拷贝到字符数组1中。

                使用方法:strcpy(字符数组1,字符串2)

                注意:① 字符数组1的长度必须足够大,以便能容纳字符串2。

                           ② “字符串2”可以是字符数组名,也可以是字符串常量,如 strcpy(s1,"abcde")。

                           ③ 字符串只能用拷贝函数,不能用赋值语句进行赋值。

                           可以用strncpy函数将字符串2中的前若干个字符拷贝到字符数组1中。如:strncpy(str1,str2,3);将str2中前3个字符拷贝到str1中,取代str1前3个字符。

        5、strcmp

                功能:比较两个字符串对应位置字符ASCII的大小。

                这个函数的返回值如下:若字符串1=字符串2,则返回值为0。

                                                        若字符串1>字符串2,则返回值为正整数。

                                                        若字符串1<字符串2,则返回值为负整数。

                使用方法:strcmp(字符串1,字符串2)

                注意:① 执行这个函数时,自左到右逐个比较对应字符的ASCII码值,直到发现了不同字符或字符串结束符'\0'为止。

                            对字符串不能用数值型比较符。

                           “字符串1”与“字符串2”可以是字符数组名,也可以是字符串常量。

        6、strlen函数

                功能:测试字符串中包含的字符的实际个数。不含‘\0’。

                使用方法:strlen(字符串)

                在使用这个函数时,“字符串”可以是字符数组名,也可以是字符串常量。

                注意:要清楚strlen和sizeof的区别(不清楚的可以看这里http://t.csdnimg.cn/102na

标签:字符,函数,嵌入式,char,数组名,数组,字符串,C语言
From: https://blog.csdn.net/weixin_46432503/article/details/140499474

相关文章

  • 字符串回文
    \(Manacher\)(马拉车)作用:可以在线性复杂度下求出每个点的最长回文半径算法流程:step1.\(manacher\)只能解决有对称中心的回文串,因此需要将所有回文串转化为有对称中心的,具体操作就是在每两个字符之间插入一个无关字符,并在首尾都插入无关字符step2.从左到右依次处理,记......
  • 【C语言】结构体,枚举,联合超详解!!!
    目录结构体结构体声明结构体成员的访问结构体自引用 结构体变量定义,初始化,传参 结构体内存对齐 位段枚举联合(共用体)结构体结构体声明1.概念1.结构体是一些值的集合,这些值称为成员变量。2.结构体的每个成员可以是不同类型的变量。3.数组:一组相同类型......
  • C语言 指针方法 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对
    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:第一个:输入10个数;第二个:进行处理;第三个:输出10个数。#include<stdio.h>voidinputNumbers(int*arr){printf("Enter10integers:");for(inti=0;i<10;i++){......
  • C语言 指针方法 输入3个整数,按由小到大的顺序输出
    输入3个整数,按由小到大的顺序输出#include<stdio.h>voidsortIntegers(int*a,int*b,int*c){if(*a>*b){inttemp=*a;*a=*b;*b=temp;}if(*a>*c){inttemp=*a;*a=*c;*c=temp......
  • 嵌入式(叁)
    嵌入式学习权限说明:权限的类型权限的数值普通文件目录r:可读4cat,less,more等lsw:可写2>(覆盖插入),>>(追加插入),touch,rmmkdir,rmdir,rmx:可执行1./文件名(执行文件)cd-:无权限0无操作无操作压缩与解压缩:gzip:​说明:linux压缩文件为.gz(gzip)格式​语法:gzip[选项]文件名/目录......
  • Java开发手册中-要求日志输出时字符串变量之间的拼接使用占位符与使用字符串拼接性能
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。Java开发手册中有这样一条:【强制】在日志输出时,字符串变量之间的拼接使用占位符的方式......
  • 小白C语言基础详解: 运算符
    运算符C语言的运算符非常多,一共有50多种,可以分成若干类。算术运算符算术运算符专门用于算术运算,主要有下面几种。+:正值运算符(一元运算符)-:负值运算符(一元运算符)+:加法运算符(二元运算符)-:减法运算符(二元运算符)*:乘法运算符/:除法运算符%:余值运算符(1)+,-+和-既可以作为一元......
  • 【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
    目录C语言逻辑操作符详解1.逻辑与(`&&`)示例输出2.逻辑或(`||`)示例输出3.逻辑非(`!`)示例输出4.逻辑操作符应用实例示例1:条件判断输出示例2:多条件判断输出5.逻辑操作符的短路特性示例输出6.逻辑操作符的优先级示例输出7.参考文献8.结束语C语言逻......
  • Leetcoede编程基础0到1——1768. 交替合并字符串& 389. 找不同
    1768.交替合并字符串题目描述:给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。输入输出实例:  示例1:输入:word1="ab......
  • Halcon的学习笔记(一)——非线性字符识别
    Halcon非线性模式的字符识别(ocr_cd_print_polar_trans.hdev例程分析)Halcon的学习笔记(一)——非线性字符识别项目上需要对非线性模式的字符进行识别,halcon中包含的例程,我搜了一下,网上对于该例程的解析比较少,因此自己便记录了一下自己的学习例程,也算自己的学习笔记。1.什......