精华内容
下载资源
问答
  • 字符数组

    千次阅读 2015-11-15 20:44:14
    前天晚上遇见一道题,题目提示要用string函数里面的一个charAt()函数,然而wo一点没学过,根本不知道如何去应用,于是这两天都在看string函数,但是还是没有找到提示的函数的用法,幸而找到了很多关于字符数组的知识...
    前天晚上遇见一道题,题目提示要用string函数里面的一个charAt()函数,然而wo一点没学过,根本不知道如何去应用,于是这两天都在看string函数,但是还是没有找到提示的函数的用法,幸而找到了很多关于字符数组的知识点。总结如下:
    1)如果在定义字符数组时不进行初始化,则数组中元素的值是不可预料的。
    2)字符串结束的标志:\0;'\0'代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可见的字符,而是一个“空操作符”,即它什么也不做。用它来做为字符串结束标志不会产生附加的操作或增加有效字符,只起到一个供辨别的作用。
    3)字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0'。在字符数组中也常常人为的加上一个'\0'。
    4)结束符:'\0';输出的字符中不包括结束符'\0'。用“%s”格式符输出字符串时,printf函数中的输出项是数组名,而不是数组元素名。如果数组长度大于字符串实际长度,也只输出到遇'\0'结束。如果一个字符数组中包含一个以上'\0',遇到第一个'\0'时输出结束。可以用scanf函数输入一个字符串,例如:`scanf("%s",c);`scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为在c语言中数组名代表该数组的起始地址。
    5)使用字符串处理函数:[1]puts函数——输出字符串的函数,一般形式为:puts(字符数组)其作用是将一个字符串(以'\0'结束的字符序列)输出到终端,用puts函数输出的字符串可以包含转义字符。[2]gets函数——输入字符串的函数,一般形式:gets(字符数组)其作用是从终端输入一个字符串到字符数组,并得到一个函数值,该函数值是字符数组的起始地址。用gets和puts函数只能输出或输入一个字符串,不能写成puts(str1,str2)或gets(str1,str2)。[3]strcat函数——strcat是STRing CATenate(字符串连接)的缩写。其作用是把两个数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。连接的两个字符串后面都有'\0',连接时将字符串1后面的'\0'取消,只在新串后面保留'\0'。[4]strcpy与strncpy函数——字符串复制函数,一般形式为:strcpy(字符数组1,字符串2)strcpy是STRingCoPY的简写,它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。“字符串2”既可以是字符数组名,也可以是一个字符串常量,例如:`strcpy(str1,"China");`。不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。可以用strncpy函数将字符串2中的钱面n个字符复制到字符数组1中去。[5]strcmp函数——字符串比较,一般形式为:strcmp(字符串1,字符串2),strcmp时STRing CoMPare(字符串比较)的缩写。它的作用是比较字符串1和字符串2。字符串的比较的规则是:将两个字符串自左至右相比(安ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。如果全部字符相同,则认为两个字符串相等,若出现不同的字符,则已第一对不同的字符的比较结果为准。<1>如果字符串1=字符串2,则函数值为0;<2>如果字符串1>字符串2,则函数值为一个正整数;<3>如果字符串1<字符串2,则函数值为一个负整数。[6]strlen函数——测字符串长度的函数,一般形式为:strlen(字符数组),strlen是STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括'\0'在内)。[7]strlwr函数——转化为小写函数,一般形式为:strlwr是STRing LoWeRcase(字符串小写)的缩写,函数的作用是将字符串中的大写字母换成小写字母。[8]strupr函数——转化为大写的函数,一般形式为:strupr(字符串),strupr时STRing UPpeRcase(字符串大写)的缩写。函数的作用是将字符串中的小写字母转化成大写字母。
    6)在使用字符串处理函数时,应当在程序文件的开头用#include<string.h>把“string.h”文件包含到文本文件中。
    
    展开全文
  • C语言中字符数组只能存放字符串? 不是的,C语言中字符数组既可以保存字符,又可以保存字符串。 字符数组本意就是是指用来存放字符数据的数组。字符数组的元素是字符类型的。字符数组用于存放字符或字符串。 C语言中...

    C语言中字符数组只能存放字符串?

    不是的,C语言中字符数组既可以保存字符,又可以保存字符串。

    字符数组本意就是是指用来存放字符数据的数组。字符数组的元素是字符类型的。字符数组用于存放字符或字符串。

    C语言中字符数组的一般形式为: char 数组名[数据长度] 。例如:char a[10]; a[0]=‘0’; a[1]=’ 1’; a[2]=‘2’; a[3]=‘3’; a[4]=‘4’; a[5]=‘5’; a[6]=’ 6’; a[7]=‘7’; a[8]=‘8’; a[9]=‘9’; 就定义了a为字符数组,包含10个"0"到“9”的字符元素。

    因此,C语言中字符数组不单单只能保存字符串。

    字符数组百和字符串的唯一区别?

    字符串必须有\0结束
    但字符数组可以没有
    没有的情况只有一个,就是字符吧数组所有的空间占用了。
    可能你不明白,举例说一下,
    申请了一个数组,a[3],有三个元素的度位置
    那么当三个字符都填充到这三个单元的时候,就是如xyz三个字符a[0]=‘x’,a[1]=‘y’,a[2]=‘z’
    那么a这个数组将没有\0的空间,
    这样是可以的,
    但是要是用字符串处理函数,如道puts,strcpy等函数的时候,这样的数组是不能当字符串来处理的,因为没有\0这个结束符,所有可能有很多乱码出现,这是正常的。
    因为这些函回数需要\0来判断字符串的结束位置,但是这样的数组没有\0,所以这些函数处理这样的数组时,判断结束不准确答,会出现乱码

    展开全文
  • C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串。那么,字符数组就一定是字符串吗? 对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和字符串是完全不相同的两个概念,千万不要...

    C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串。那么,字符数组就一定是字符串吗?

    对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和字符串是完全不相同的两个概念,千万不要混淆。分析如下所示的示例代码。

    #include <stdio.h>
    #include <string.h>
    int main(void)
    {
        /*字符数组赋初值*/
        char cArr[] = {'I','L','O','V','E','C'};
        /*字符串赋初值*/
        char sArr[] = "ILOVEC";
        /*用sizeof()求长度*/
        printf("cArr的长度=%d\n", sizeof(cArr));
        printf("sArr的长度=%d\n", sizeof(sArr));
        /*用strlen()求长度*/
        printf("cArr的长度=%d\n", strlen(cArr));
        printf("sArr的长度=%d\n", strlen(sArr));
        /*用printf的%s打印内容*/
        printf("cArr的内容=%s\n", cArr);
        printf("sArr的内容=%s\n", sArr);
        return 0;
    }
    
    运行结果为:
    cArr的长度=6
    sArr的长度=7
    cArr的长度=7
    sArr的长度=6
    cArr的内容=ILOVEC*
    sArr的内容=ILOVEC
    
    从代码及其运行结果中可以看出如下几点。
    
    首先,从概念上讲,cArr 是一个字符数组,而 sArr 是一个字符串。因此,对于 sArr,编译时会自动在末尾增加一个 null 字符(也就是'\0',用十六进制表示为 0x00);而对于 cArr,则不会自动增加任何东西。
    
    记住,这里的 sArr 必须是“char sArr[7]="ILOVEC"”,而不能够是“char sArr[6]="ILOVEC"”。
    
    其次,“sizeof()”运算符求的是字符数组的长度,而不是字符串长度。因此,对于“sizeof(cArr)”,其运行结果为 6;而对于 sizeof(sArr),其运行结果为 7(之所以为 7,是因为 sArr 是一个字符串,编译时会自动在末尾增加一个 null 字符)。因此,对于以下代码:
    
    /*字符数组赋初值*/
    char cArr[] = {'I','L','O','V','E','C'};
    /*字符串赋初值*/
    char sArr[] = "ILOVEC";

    也可以写成如下等价形式:

    /*字符数组赋初值*/
    char cArr[6] = {'I','L','O','V','E','C'};
    /*字符串赋初值*/
    char sArr[7] = "ILOVEC";

    最后,对于字符串 sArr,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。

    通过对以上代码的分析,现在我们可以很简单地得出字符数组和字符串二者之间的区别:

    • 对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。
    • 对于字符串,它必须以 null 结尾,其后的字符不属于该字符串。字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。

    转载于:http://c.biancheng.net/view/337.html

    展开全文
  • 字符串转化为字符数组: char[] ss=s.toCharArray();//s为要转化的字符串 字符数组转化为字符串: String s=""; for(int i=0;i<ss.length;i++){ s+=ss[i]; } 或 char ch={'1','2','3'}; String str=new ...

    字符串转化为字符数组:

    char[] ss=s.toCharArray();//s为要转化的字符串

    字符数组转化为字符串:

    String s="";
    for(int i=0;i<ss.length;i++){
        s+=ss[i];
    }

    char ch={'1','2','3'};
    String str=new String(ch);
    //or
    String str=String.valueOf(ch);

    注意:直接对字符数组采用toString()方法,并不能将其转化为预期的字符串,结果是[类型@哈希值],比如

    char[] ch={'1','2','3'};
    String s=ch.toString();
    System.out.println(s);

    所得结果为:

    所以数组转为字符串应写成:Arrays.toString(ch),但这种方法的toString()是带格式的,也就是说输出的是[1, 2, 3],并不是预期的"123"。

    展开全文
  • 把字符串转化为字符数组并把字符数组排序输出需求:循环输入一个字符串String,把字符串转化为字符数组char [ ] ,并把该字符数组按照自然顺序排序后输出。package cn.itcast_07; import java.util.Arrays; import ...
  • 字符数组与字符串数组

    千次阅读 2017-05-21 17:22:20
    C语言中:字符数组与字符串数组的定义字符数组是一个存放字符的数组字符串数组是一个特殊的字符数组,它以’\0’(ASCII 为0)结尾我们不能通过字符数组名知道数组内有多少成员,但可以通过字符串数组名计算数组内的...
  • C++ 字符串与字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    字符串实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以...
  • C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ...
  • 最近看到了这样编程要求:将字符数组s2中全部字符复制到字符数组s1,不用strcpy(复制时‘\0’也要复制过去‘\0’后面的字符不用复制) 于是自己编写了三种实现方法,这里没有使用指针相关的。 第一种方法在for循环...
  • 二维字符数组与字符串数组

    千次阅读 2019-07-22 10:46:00
    首先,对于一维字符数组:char a[N]={}; 其实最后代表的也是一个字符串 字符数组的初始化有两种方式: 但其实使用字符常量初始化数组的时候,可以不加上这个 '\0',而使用字符串初始化字符数组的时候,是自动...
  • 关于字符数组

    千次阅读 2021-03-06 13:27:21
    字符数组是指数组元素的数据类型是字符型,字符数组有一组字符数组、二维字符数组和多维字符数组,C语言没有字符串变量,是通过字符数组存储和处理字符串。 下面是一些关于字符数组的注意事项:字符数组的输入输出、...
  • 1.误区:字符数组就是字符串
  • 在C语言中,字符数组经常被用到,但是,仍然有一些细节的地方是需要注意的。之前在做项目的时候,也碰到类似的问题。现在把这个知识点记录下来,方便自己查找,也方便大家交流。 字符数组的定义
  • 二维字符数组与字符串数组的使用

    千次阅读 2020-03-20 17:34:15
    二维字符数组与字符串数组的使用 一维字符数组的定义形式如下: <存储类型>char<数组名>[<常量表达式>]={<初始值>}; 二维字符数组定义的形式是: <存储类型>char<数组名>...
  • C语言二维字符数组详解

    万次阅读 多人点赞 2019-07-06 23:28:10
    二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第一维大小][第二维大小]; 如: char c[3][10]; //...
  • 1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花...
  • 一、字符数组to字符串 直接声明   char[] c={'a', 'b', 'c'}; String s = new String(c); 二、字符串数组to字符串 string是不可变类——利用StringBuffer String[ ] str = {"abc", "dfe&...
  • ”的赋值语句是错误的,因为在C++中,无法通过给字符数组名赋值来实现给字符数组每一个元素赋值。 正确的赋值方法应该是: 通过for循环来赋值 #include<iostream> using namespace std; int main(){ char ...
  • printf打印数组_C语言数组字符数组

    千次阅读 2020-12-06 13:05:18
    01.C语言基础-数据类型02.C语言中算法的基本特性和表达方式03.C语言中的输入输出函数04.C语言基础-循环控制语句05.C语言基础-条件控制语句06.C语言基础-控制语句...今天我们一起看看字符数组字符数组字符数组顾名...
  • 字符串数组是双引号的; a="hello"; 字符数组是单引号的: b='hello'; matlab2016之后越来越多的使用字符串数组,两者可以做如下转换: a=string(b); b=char(a); ...
  • (1)字符串和字符数组的转化 // 字符串转化成字符数组 String str = &quot;abcdefg&quot;; char[] ch = str.toCharArray(); //输出a System.out.println(ch[0]); //字符数组转化成字符串 ...
  • C语言字符数组

    千次阅读 2019-04-19 17:00:50
    字符数组来处理字符串。 二、字符数组的定义 因为字符数组是存放字符的数组,故其 与数组定义类似。其定义一般为: char a[10]; 表示定义了10个字节的连续内存空间。 三、字符数组的初始化 我们使用字符串来初始化...
  • 字符数组和字符串

    万次阅读 多人点赞 2017-01-26 22:52:04
    一、字符数组和字符串的再认识此处关于字符串是否是字符数组的问题,此处我们需要明确: 字符数组,完整地说叫字符类型的数组。字符数组不一定是字符串。 字符串是最后一个字符为NULL字符的字符数组。字符串一定是...
  • C语言 | 字符数组

    2021-04-12 09:45:02
    字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似。 //例子: char character[10]; C语言字符数组的初始化 C语言对字符数组初始化,最容易...
  • 字符串与字符数组 字符串一定是一个char的数组,但char的数组未必是字符串。——以字符’\0’结尾的char数组就是一个字符串,但如果char数组没有以’\0’结尾,那么就不是一个字符串,只是普通字符数组,所以字符串...
  • 文章目录字符数组与字符指针字符数组字符指针指针数组(字符串) 字符数组与字符指针 在C语言中,可以用两种方法表示和存放字符串: (1)用字符数组存放一个字符串 char str[]="I am happy"; (2)用字符...
  • //将一个字符数组的值拷贝到另一个字符数组中。 char[] a={'J','a','v','a'}; char[] b=new char[a.length]; //方法一:for循环 for (int i = 0; i < b.length; i++) { b[i]=a[i]; } ...
  • 字符数组与字符串: 字符串数组是一种特殊的字符数组。当字符数组以数字0结尾(等价于'\0')时,就是一个字符串数组,反之就是字符数组。所以说,字符串数组,就是特殊的字符数组。 C语言中没有字符串这种数据类型,...
  • 一、字符指针、字符数组 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。 char *ps=&quot;C ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,050
精华内容 74,820
关键字:

字符数组