精华内容
下载资源
问答
  • C语言:操作字符串数组

    千次阅读 2017-09-19 11:47:25
    任务代码: (1)求最小的姓氏:(对比姓氏开头的ASCII值) ...//返回值是一个字符串,所以是一个指向字符的指针 int main() { char name[5][10]={"Zhao","Qian","Sun","Li","Zhou"}; printf("%s\n",

    任务代码:

    (1)求最小的姓氏:(对比姓氏开头的ASCII值)

    #include <stdio.h>
    #include <string.h>
    
    char *min_name(char [][10],int);//返回值是一个字符串,所以是一个指向字符的指针
    
    int main()
    {
        char name[5][10]={"Zhao","Qian","Sun","Li","Zhou"};
        printf("%s\n",min_name(name,5));
        
    }
    
    char *min_name(char nam[][10],int n)
    {
        int i;
        char *p;
        p=nam[0];//第一行字符串
        for(i=0;i<n;i++)
        {
            if(strcmp(p, nam[i])>0)
                p=nam[i];
        }
        return p;
    }
    


    (2)姓氏排序

    #include <stdio.h>  
    #include <string.h>  
    void sort(char *name[],int n);  
    void print(char *name[],int n);  
    int main( )  
    {  
        char *name[]= {"Zhao", "Qian", "Sun", "Li", "Zhou"};  
        sort(name, 5);  
        print(name, 5);  
        return 0;  
    }  
    void print(char *name[],int n)  
    {  
        int i;  
        for(i=0; i<n; i++)  
            printf("%s\n", name[i]);  
    }  
    void sort(char *name[],int n)  
    {  
        char *temp;  
        int i,j,k;  
        for(i=0; i<n-1; i++)  
        {  
            k=i;  
            for(j=i+1; j<n; j++)  
                if(strcmp(name[k],name[j])>0)  
                    k=j;  
            temp=name[i];  
            name[i]=name[k];  
            name[k]=temp;  
        }  
    }  

    (3)二级指针

    #include <stdio.h>  
    int main( )  
    {  
        char **p;  
        char *name[]= {"Zhao", "Qian", "Sun", "Li", "Zhou"};  
        for(p=name+1; p<name+5; p+=2)  
            printf("%s\n",*p);  
        return 0;  
    }  


    知识总结:

    字符串数组容易造成一定程度的空间浪费!

    指针字符数组可以避免空间浪费!



    (2)指向指针的指针:




    展开全文
  • 基础知识 定义和初始化 数组 指针 二者的对比 字符串函数 输入与输出(头文件stdio.h) 字符串的输入 字符串的输出 常用函数(头文件string.h) ...将字符串2拼接到字符串1后面 比较两字符串的字典顺序,str2位于str...

    基础知识

    字符串常量

    定义

    字符串常量是指用双引号括起来的内容(不包含双引号本身)。

    双引号是用来告知编译器它括起来的是字符串。——《C Primer Plus》

    性质

    1. 字符串常量是储存在静态空间里的静态数组,拥有静态变量所拥有的性质:只被储存一次、存在于整个生命周期。
      在定义相同内容的字符串常量时,可能只为其分配一次存储空间,也可能分配多次
    2. 字符串常量(包括双引号及其括起来的内容)代表该字符串存储空间的首地址——类似数组名。
    3. 定义时在内存中储存的内容是双引号括起来的内容+结尾的空字符。

    字符串数组

    1. 指针存储
    int main()
    {
    	char string1[3] = "Hi";
    	char string2[6] = "Hello";
    	char string3[7] = "hahaha";
    	char* StringPtr[3]; //建立一个含三个类型为指向字符的指针的元素的数组
    	StringPtr[0] = string1;
    	StringPtr[1] = string2;
    	StringPtr[2] = string3;
    /*再依次让三个指针指向不同的字符串首元素的地址(即字符串的首地址)*/
    }
    
    1. 数组存储
    int main()
    {
    	char stringss[3][7] = {"Hi","Hello","hahaha"};//建立一个二维数组
    }
    
    1. 两者的差别
    • 二维数组的储存方式更直观,但占用了更多不必要的空间(当字符串长度差别很大时,这种劣势会更明显),指针的储存方式则相反。
    • 在做排序时,直接排序指针比对数组的直接排序(利用strcpy函数)内容简单,而且保留了数组中字符串的原始顺序。见代码:
    #include <string.h>
    int main()
    {
    	char stringss[3][7] = {"Hi","Hello","hahaha"};
    	for( int i = 0; i < 3; i++ )
    	{
    		StringPtr[i] = stringss[i];
    	}
    	/*按字典顺序排序指针*/
    	for( int i = 0; i < 3; i++ )
    	{
    		for( int k = i+1; k < 3; i++ )
    		{
    			if( strcmp( StringPtr[i], StringPtr[k]) > 0 )
    			{
    				char* TempPtr = StringPtr[i];
    				StringPtr[i] = StringPtr[k];
    				StringPtr[k] = TempPtr;
    			}  
    		}
    	}
    	/*此时stringss中的元素均没有发生改变*/
    	/*直接按字典顺序排序数组内容*/
    	for( int i = 0; i < 3; i++ )
    	{
    		for( int k = i+1; k < 3; k++ )
    		{
    			if( strcmp( stringss[i], stringss[k]) > 0 )
    			{
    				char TempPtr[7];
    				strcpy(TempPtr,stringss[i]);
    				strcpy(stringss[i] ,stringss[k]);
    				strcpy(stringss[k] ,TempPtr);
    			}  
    		}
    	}
    	/*此时stringss中原来的顺序无法找到*/
    }
    

    空字符vs空指针

    • 相同点:空字符和空指针都可用数值0来表示
    • 不同点:空字符代表的0是指ASCII码表上0对应的空字符’\0’,空指针(NULL)代表的0是指的是一个地址,该地址不会与任何数据的有效地址对应。

    定义和初始化

    用数组储存字符串(3种方式)

    第一种:

    char str[] = "Hello"; //用字符串常量初始化
    

    第二种:

    char str[6] = {'H''i''\0'};//省略括号中的无语法问题,但数组大小只有3
    char str[] = {'H''i''\0'};
    

    第三种:

    #include <stdio.h>
    char str[10];
    scanf("%s", str);
    
    1. 在初始化数组时,若指定了数组大小,所有未被使用的元素都被自动初始化为’\0’。
      因此如上方法2的第一种,初始化的结果是’H’ ‘i’ ‘\0’ ‘\0’ ‘\0’ ‘\0’
    2. 字符串常量之间没有空格或用空白字符分隔,等价于其串连起来的字符串。
    char str[] = "Hello " "wor""ld";
    char str1[] = "Hello world";
    

    这里str和str1的内容是一样的。

    用指针访问字符串

    char *str = "Hello"; //名为str的指针指向字符串常量所在的首地址
    

    不同指针指向相同内容的字符串常量,编译器可能只给该字符串常量分配1次,(也可能分配多次)储存空间。

    二者的对比

    1. 数组有顶层const,因此数组不是可被赋值的左值。数组名代表的地址不可改变。而指针指向的地址可以改变(但其指向的字符串地址无法改变)。
    2. 定义时,字符串被储存在静态存储区中。
      用数组存储字符串时,是将静态存储区中的字符串拷贝到数组中;
      而指针未为字符串的存储分配具体空间,用指针定义字符串时,实则是让指针访问该静态变量所储存的地址。这也就导致此时不能用scanf对字符串进行输入,用指针修改字符串中元素的值时,可能导致其它指向相同内容字符串的指针指向的值发生改变(而相同内容的数组之间是独立的)。

    建议在把指针初始化为字符串字面量时使用const限定符。
    如果不修改静态存储的字符串本身,不要使用指针指向字符串字面量。
    ——《C Primer Plus》

    字符串函数

    输入与输出(头文件stdio.h)

    字符串的输入

    调用格式 读取时的停止标识符 读取方式 是否导致越界 优势 特点
    gets gets(StringName); 换行符 整行读入,丢弃末尾换行符 可能 优势,可能c99建议不用,c11废除此函数 方便,但容易产生不可预判的结果
    fgets fgets(StringName, StringLength, stdin); return键 整行读入(会保留末尾的换行符)或读入了StringLength-1个字符 避免越界,还可以读取文件中的字符 所有输入的文字留在缓冲区,若不清理则可能被下一个字符数组读取
    gets_s gets_s(StringName, StringLength); 换行符 整行读入(丢弃末尾的换行符)或读入了StringLength-1个字符 避免越界 越界时会丢弃该输入行的其他内容,程序将中止或退出,若想程序继续运行,需要另外写“处理函数”
    sprintf 与printf基本相同,除左括号后的第一个量是被填入的字符串名 后引号 可能 将本应打印于电脑屏幕的字体储存在字符串中,变量的内容应预先输入好
    scanf scanf("%s", StringName); 空白字符:空格、tab、enter 按单词读入,丢弃末尾空白符 可能 能读取不同种类的数据 详情见数据类型、转换符及标准化输入输出

    字符串的输出

    调用格式 是否额外添加换行符 备注
    puts puts(StringName); 一直打印直至遇到’\0’,已经被废弃
    fputs fputs(StringName, FileName); 将字符串的内容写入文件,若要打印在屏幕上,FileName位置写stdout
    printf printf("%s", StringName); 可以输出不同类型的变量,详情见数据类型、转换符及标准化输入输出

    常用函数(头文件string.h)

    strlen strcat(strncat) strcmp(strncmp) strcpy(strncpy)
    作用 计算字符串(不算结尾空字符)长度 将字符串2拼接到字符串1后面 比较两字符串的的机器排序序列(一般是ASCII码表),str2位于str1前返回正数,位于其后返回负数,二者相等返回0 用第二个字符串的内容等位地覆盖第一个字符串
    调用格式 strlen(StringName); strcat(str1,str2); strcmp(str1,str2); strcpy(str1,str2);
    特点/局限性 暂无 不能检查组合后的字符串是否越界 比较的是字符串而非字符 str1未必指向字符串的开始。若字符串2过短,会保留字符串1的部分内容。
    是否改变字符串 str1改变,str2不变 str1改变,str2不变
    改变结果 str1变为原str1除去空字符后接上整个str2 从str1指向的地址开始,被str2的内容覆盖
    加n与原函数的区别 可控制连接后字符串(不包括空字符)的总长度不超过n 只比较前n个字母的机器排序序列 只覆盖从str1到str1+n指向的地址中间的区域
    带n函数的调用格式 strncat(str1,str2,n); strncmp(str1,str2,n); strncpy(str1,str2,n);

    函数原型

    size_t strlen(const char*);
    char* strcmp(const char*, const char*);
    char* strncmp(const char*, const char*, size_t);
    char* strcat(char*, const char*);
    char* strcpy(char*, const char*);
    char* strncat(char*, const char*, size_t);
    char* strncpy(char*, const char*, size_t);
    

    较常用函数

    /*调用函数strrchr和strchr时,第二个实参可以是字符。*/
    /*虽然函数原型中第二个参数的类型是int,但字符在计算机中的储存形式是其ASCII码,因此可直接用int类型进行读取。*/
    char* strrchr(const char* s, int c); //查找字符串s中是否有字符c,若有则返回该字符最后一次出现的地址,若无则返回空指针
    char* strchr(const char* s, int c); //查找字符串s中是否有字符c,若有则返回该字符首次出现的地址,若无则返回空指针
    char* strstr(const char* s1, const char* s2);//查找字符串s1中是否有字符串s2,若有则返回该字符串首次出现的首地址,若无则返回空指针
    char* strpbrk(const char* s1, const char* s2);//查找字符串s1中是否有字符串s2中的部分内容,若有则返回该部分字符串在s1中首次出现的首地址,若无则返回空指针
    

    与字符相关的函数(头文件ctype.h)

    展开全文
  • 在存储时,SDS中的buf数组沿用了C语言以空字符串结尾的惯例,方便重用一部分C语言的函数库。 那么为什么redis要自己定义一个SDS结构呢? 在C语言中,字符串不会记录自己的长度,如果要获取一个字符串的长度,需要...

    redis并没有直接重用C语言中的字符串,而是自己定义了一个SDS(SDS结构在另一篇文章中)。在存储时,SDS中的buf数组沿用了C语言以空字符串结尾的惯例,方便重用一部分C语言的函数库。

    那么为什么redis要自己定义一个SDS结构呢?

    1. 在C语言中,字符串不会记录自己的长度,如果要获取一个字符串的长度,需要遍历整个字符串,并且计数,直到遇见空字符‘\0’为止,此时时间复杂度为O(n)。而SDS中专门使用len属性来保存字符串的长度,获取字符串长度的时间复杂度为O(1)。(这里说明redis中获取String对象长度的命令是:STRLEN key)
    2. 防止缓冲区溢出。在对SDS修改时,会先检查SDS的alloc值,也就是未使用的空间是不是满足修改所需要的大小,如果不满足,那么会自动将SDS的空间扩展到满足需要的大小。这样避免了因为没有足够的空间而造成buf数组溢出。
    3. C语言中字符串的底层实现是一个N+1长的数组(N就是字符串长度,再加上空字符‘\0’),每次增长或者缩短一个字符串时,都需要对数组进行一次内存重分配操作:(1)增长字符串,如果忘记扩展数组,那么会造成内存溢出;(2)缩短字符串,如果忘记释放多余空间,那么会造成内存泄漏。SDS通过alloc属性来记录未使用空间,解决了这两个问题。SDS使用了两种优化策略:
      1. 空间预分配:用于优化字符串增长。当字符串增长时,不仅仅对SDS进行所需空间的扩展,还会对SDS分配额外的未使用空间。至于这个“分配的额外未使用空间(也就是alloc)”是多少,redis给出了两个公式:
        1. 如果对SDS修改之后,len<1MB,那么alloc的大小=len的大小。例如:进行修改之后的SDS,len=13bit,那么此时alloc也被分配13bit,加上额外1bit用来存放空字符串‘\0’,这时buf数组的实际长度=13+13+1=27bit
        2. 如果对SDS修改之后,len>=1MB,那么alloc=1MB。例如,修改之后SDS的len=30MB,那么此时buf的实际长度=30MB+1MB+1bit
        3. 这样的好处是:在扩展SDS之前总会去检查SDS是否有足够的alloc,假设此时因为前一次扩展分配的alloc能够满足此次的空间需求,那么此时就不必再进行一次扩展,也就是不需要再执行一次内存重新分配。
      2. 惰性空间释放:用于优化字符串缩短。当SDS保存的字符串需要缩短时,不会立即通过内存重分配来回收多余字节,而是将多余字节记录到alloc属性中,等待将来扩展时使用。redis也提供了相应的释放内存空间的API,不用担心内存泄露。
    4. C语言中是根据空字符‘\0’来判断字符串是否已结尾,这样就不能保存例如图片、视频这样的二进制数据。比如现在需要多个空字符来分割多个字符串,如下。那么在C语言中只会读取到“redis”,而读取不到“cluster”;SDS则是根据len属性来判断字符串是否结尾,所以不必担心,这样redis不仅可以保存文本数据,还可以保存任意二进制数据。
    ‘r’ 'e' 'd' 'i' 's' '\0' 'c' 'l' 'u' 's' 't' 'e' 'r' '\0'

     

    以下是来自《redis设计与实现》一书中对C语言字符串和SDS的对比表

    C字符串 SDS
    获取字符串长度的复杂度为O(N) 获取字符串长度的复杂度为O(1)
    API是不安全的,可能会造成缓冲区溢出 API是安全的,不会造成缓冲区溢出
    修改字符串长度N次必然需要执行N次内存重分配 修改字符串长度N次最多需要执行N次内存重分配
    只能保存文本数据 可以保存文本数据或者二进制数据
    可以使用所有的<string.h>库中的函数 可以使用一部分<string.h>库中的函数
    • SDS相关的API可以在sds.h 和 sds.c中查看
    展开全文
  • c语言和c++字符串操作对比

    千次阅读 2018-10-05 13:56:23
    C语言字符串操作 #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { //字符数组 char str1[20] = "abcde"; //初始化 char str2[20] = { 'a','b','c' };//初始化 //...

    C语言字符串操作

    #include <stdio.h>
    #include <string.h>
    int main() {
    	//字符数组
    	char str1[20] = "abcde";		//初始化
    	char str2[20] = { 'a','b','c' };//初始化
    	//str2 = "abc";	错误
    	char str3[20];
    	str3[0] = 'a'; str3[1] = 'b'; str3[2] = '\0';
    	//字符指针
    	char *pstr = "bcd"; //将常量字符串的地址赋给pstr
    	pstr = "def";
    	pstr = str1;
    	pstr[0] = 'x';		//通过指针修改
    	*(pstr + 1) = 'y';	//通过指针修改
    	printf("str1=%s\n", str1); // 输出xycde
    	//字符串长度
    	printf("str1长度= %d\n", strlen(str1));  //5
    	//字符串拷贝
    	printf("str1=%s\n", strcpy(str1, "ddd"));//ddd
    	//字符串连接
    	printf("str1=%s\n", strcat(str1, str2)); //dddabc
    	//字符串比较
    	if (strcmp(str2, str3) > 0)
    		printf("%s > %s\n", str2, str3);
    	else if(strcmp(str2, str3) == 0)
    		printf("%s == %s\n", str2, str3);
    	else
    		printf("%s < %s\n", str2, str3);
    	//字符串查找
    	strcpy(str2, "--ab=="); //str3: "ab"
    	printf("%s\n", strstr(str2, str3)); //ab==
    	return 0;
    }
    

    c++字符串操作

    #include <iostream>
    #include <string>
    using namespace std;
    int main() {
    	//std::string
    	std::string str1("abc"); //初始化
    	string str2 = "bcd";	 //初始化
    	str2 = "defg";			 //可以直接赋值
    	str2 = str1;			 //可以直接赋值
    	
    	const char *pstr = str2.c_str(); //转c风格字符串
    	str2[0] = 'X';		//可以直接下标访问操作
    	str2.at(1) = 'Y';	//可以 at 访问操作
    	cout <<"str2=" << str2 << endl; //XYc
    	
    	//求字符串长度
    	cout << str2.size() << endl;
    	cout << str2.length() << endl;
    	//strlen(str1); 错误
    	cout << strlen(str2.c_str()) << endl; //正确
    	//字符串连接
    	str2 = str2 + str1 + "!!";
    	cout << "str2=" << str2 << endl; //XYcabc!!
    	//字符串比较 (str1: abc)
    	cout << str2.compare(str1) << endl; //-1
    	cout << (str2 < str1) << endl;	    //1
    	//字符串查找
    	cout << str2.find(str1) << endl;	//3
    	//字符串提取
    	string str3 = str2.substr(3, 3);
    	cout << str3 << endl;				//abc
    
    	return 0;
    }
    
    展开全文
  • 圳 职 业 技 术 学 院Shenzhen Polytechnic 五单元5字符型数组 ...有关字符串的常用程序算法统计字符串中各种字符的 个数大小写字母转换字符串复制连接等 难点 字符串结束标志的使用 学方法 采用对比法通过与一维数组
  • C语言与C++字符串对比

    2019-12-24 19:57:04
    1.源代码 #include #include using namespace std;...//定义字符串数组 void f1(int n);// 信息录入函数 void f2(string ming,int n);//查找学生信息信息函数 int main() { int n; string ming;//存放要查找...
  • C语言 对比数组内容的函数

    万次阅读 2018-04-27 10:47:22
    C/C++函数,比较两个字符串 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1<str2,则返回负数; 若str1>str2,则返回正数。 原型 编辑 1 externintstrcmp(const...
  • C语言定义字符串

    2020-07-29 15:22:46
    字符数组里没加‘\0’的时候,字符串长度应为字符串实际长度+1; char name[] = {'a', 'b', 'c', 'd', 'e', '\0'}; char name[] = 'abcde'; 这种写法等价于方式2. 深度理解存储方式 案例1 运行结果: 对比案例: ...
  • 我怎么从一个很长很长的字符串中,识别到某个字符串之后,开始从这个字符串截取到这个原字符串的最后一位? 这个问题是我同事问我的,当时我一脸懵逼,然后想到一个数组,然后对比查找,再然后获取位置,然后直接...
  • C语言中没有字符串类型的数据,字符串是借助字符数组来处理的。回文字符串的应用又很广,在教学过程采用“提出问题-分析问题-解决问题”的模式,通过对比分析回文串的特性,来引导学生解决问题,以便掌握判断回文...
  • 以下脚本,定义两个一样的字符数组对比后,打印出result的值: Action() { int result; char string1[] = "We can see the string:nancy"; char string2[] = "We can see the string:nancy"; lr_...
  • 2021-03-12 认识C语言②五、字符串、转义字符和注释1、字符串2、转义字符3、注释六、三大语句及函数,数组七、操作符1、算术操作符2、移位操作符3、位操作符4、赋值操作符5、单目操作符1、算术操作符1、算术操作符1...
  • 描述: 对于有n个字符的字符串,设计算法判断字符串是否中心对称。例如,xyzzyx和xyzyx都是中心对称的字符串。 输入说明: ...数组按下标对比即可 #include<stdio.h> #include<stdlib
  • KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一.简单匹配算法 先来看一个简单匹配算法的函数: ...
  • C语言统计一个字符串(包含空格)中字母的种类(不是个数) ...先用一个数组将26个字母进行保存,然后将输入烦人字符串中的每一个元素与这26个字母对比,看时候有重复。第一次出现重复时将保存26个元素的数组中对...
  • LR中用C语言比较两个字符串变量

    千次阅读 2012-12-25 19:05:37
    以下脚本,定义两个一样的字符数组对比后,打印出result的值: 1. vuser_init() 2. { 3. int result; 4. char string1[] = "We can see the string:nancy"; 5. char string2[] = "We can see the ...
  • 每个字符串末尾会有一个\0,这就是空字符串C语言用它来标记字符串结束,空字符串不是数字0,他是非打印字符,其ASCII码是0。 数组定义:同类型的数据元素的有序序列。 1.使用字符串 #include<stdio.h> #...
  • C语言中的字符串,遇到'\0'则结尾,用长度N+1的数组维护长度为N的字符串。 而Redis的SDS是 len表示字符串的长度; free表示空闲的,未分配的空间; buffer数组是真正的字符串,并且以'\0'结尾。 现在我们对比...
  • 字符串对象: redis没有直接使用C语言... C语言字符串:是以空字符串结尾的字符数组 redis SDS长这样: 两个字符串差异对比: SDS依旧遵循空格结尾,这样很多方法可以复用,不必重复造轮子,字节数...
  • 一;字符串简介  字符串(character string)是一个或多个字符的序列。... C语言当中,没有专门存储字符串的变量类型,字符串都被存储在char类型的数组当中(数组由联系的存储单元组成,同类型数据...
  • 基于课程应用的c语言基础回顾:五大板块 —— 数组,指针,结构体,链表,字符串 字符串一、字符串的定义方式与输出二、字符串的结尾是 ' \0 '所以用strlen计算有效字符的长度strlen使用(1)注意字符数组当做字符...
  • 柔性数组简介二、SDS和c语言字符串对比1.SDS可以常数时间获取字符串长度2.SDS可以杜绝缓冲区溢出3.减少修改字符串带来的内存重分配次数4.SDS是二进制安全的5.SDS支持部分c函数总结 前言 本文对Redis的简单动态字符...
  • //仿照栈进行存储左括号,与字符串内的数组进行对比 int main(int args,char *argv[]) { char str[N]; char str1[N]; printf("input a new backet :\n"); gets(str); int top=-1; int i=0; while(st
  • 解题思路: 先对products数组按照字母进行排序,然后通过对比前N个search字符串与products 排序后的数组进行对比,如果相同的话,则把字符串添加到返回输出...2、三维字符串数组的输出也需要考虑,尤其是int型的ret...
  • C语言判断回文数的几种方法。

    千次阅读 2020-04-21 19:25:54
    方法一 通过字符串数组来判断回文 思路:使用两个数组,将整数转换成字符串,然后反着赋值给另一个数组,对比原数组和新数组是否一样。如果一样就是回文,反之不是。(这种方法有点沙雕而且局限性好大我感觉!!!)...
  • 遍历数组,依次对比元素 C语言代码实现 #include <stdio.h> //find string in string, return the first start location or -1 if can not find int StringFind(const char *pSrc, const char *pDst) { int i...
  • strlen()是用来求字符串长度的一个函数,sizeof()是用来求指定变量或者变量类型等所占内存大小的操作符。 看下面几个例子就明白了: char ss[] = "0123456789"; sizeof(ss) 结果 11 ===》ss是数组,计算到...
  • 我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度, C语言中有一个可以获取字符串长度的函数strlen并且与sizeof做对比: extern unsigned int strlen(char s); 其中形参只能为字符指针类型,其...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

c语言字符串数组对比

c语言 订阅