精华内容
下载资源
问答
  • c语言字符串结束的作用

    千次阅读 2020-02-24 12:28:15
    想要精通一门语言需要反复学习和思考,每一次学习都会有不同的体会.初学c语言的会后会有很多懵逼的地方,当有一定的c基础的时候,.../* c语言字符串结束 */ #include<stdio.h> #include<string.h> void m...

    想要精通一门语言需要反复学习和思考,每一次学习都会有不同的体会.初学c语言的会后会有很多懵逼的地方,当有一定的c基础的时候,在学一遍c语言又会有很多新的体会,发现很多细节,同时还会拓展出好些疑问.

    之前一直很疑惑数组越界和字符串的长度问题,写代码测试了下:

    /* c语言字符串结束符 */
    #include<stdio.h>
    #include<string.h>
    void main()
    {
    	char a[20]="hello world";
    	char b[5];
    	int len;
    	len = strlen(a);
    	printf("strlen is %d \n",len);
    	len = sizeof(a);
        printf("sizeof is %d \n",len);
    
    	strcpy(b,a);            //把含有'\0'结束符的a地址空间的数据复制到b地址空间
    	printf("b[5]= %s\n",b); //打印出的也会越界,超出数组大小,因为%s是打印字符串,以'\0'做标志.
    	a[3] = '\0';            //中间加'\0',会影响到strcpy printf 对字符串长度的判别
    	printf("中间加0后,a[20]=%s\n",a);
    	strcpy(b,a);
    	printf("中间加0后,b[5]=%s\n",b);
    	/*
    	c语言中没有单独的字符串类型(c++有),字符串用数组的来实现,
    	且以\0作为字符串标志,\0会影响所有以字符串形式参与运算的语句.
    	*/
    }
    

    在vs2010环境运行,结果如下:在这里插入图片描述

    
    
    
    
    展开全文
  • C语言字符串结束

    千次阅读 2016-04-29 10:05:02
    '\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。...原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串字符串总是以'\0'作为串的结束。因此当把一个字符串存入一

    '\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。'\0'就是 字符串结束标志。

    '\0'是转译字符,意思是告诉编译器,这不是字符0,而是空字符。空字符\0对应的二进制为00000000,而数字0为00110000


    原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

    说明

    把一个字符串赋值给数组:u8 str1[]={"cxjr.21ic.org"};
    实际上数组str1在内存中的实际存放情况为: 
    c x j r . 2 1 i c . o r g '\0' 
    这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。 
    把字符数组str1中的字符串拷贝到字符数组str2中。串结束标志'\0'也一同拷贝。

    个案
    1. 当数组长度不够。假设我们指定了数组长度,如:u8 str1[13]={"cxjr.21ic.org"};
    由于字符组str1的长度为13,所以后面的信息会丢失,即'\0'丢失。

    2. 如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。如:
    u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};
    如果希望数组以'\0'结束,则可以写成以下三者之一:

    1. u8 str1[]={"cxjr.21ic.org"}; //字符串赋值
    2. u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'}; //人工添加
    3. u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; //故意给数组预留一个空位

    程序例证

    复制代码
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    
    int main()
    {
        char s[] = "10";
        printf("%s\n", s);
        printf("s[1]:%d\n", s[1]);
        printf("s[2]:%d\n", s[2]);
        printf("s[1]:%c\n", s[1]);
        printf("s[2]:%c\n", s[2]);
    
        char u[] = {"hello"};
        cout << sizeof(u) / sizeof(*u) << endl;
        char v[] = "hello";
        cout << sizeof(v) / sizeof(*v) << endl;
    }
    复制代码

    结果

     

    展开全文
  • c语言字符串与c++字符串In C, strings are one special kind of array: a string is an array of char values: 在C语言中,字符串是一种特殊的数组:字符串是char值的数组: char name[7];I introduced the char ...

    c语言字符串与c++字符串

    In C, strings are one special kind of array: a string is an array of char values:

    在C语言中,字符串是一种特殊的数组:字符串是char值的数组:

    char name[7];

    I introduced the char type when I introduced types, but in short it is commonly used to store letters of the ASCII chart.

    当我介绍类型时,我介绍了char类型,但简而言之,它通常用于存储ASCII图表的字母。

    A string can be initialized like you initialize a normal array:

    可以像初始化普通数组一样初始化字符串:

    char name[7] = { "F", "l", "a", "v", "i", "o" };

    Or more conveniently with a string literal (also called string constant), a sequence of characters enclosed in double quotes:

    或者更方便地使用字符串文字(也称为字符串常量),即用双引号引起来的一系列字符:

    char name[7] = "Flavio";

    You can print a string via printf() using %s:

    您可以使用%s通过printf()打印字符串:

    printf("%s", name);

    Do you notice how “Flavio” is 6 chars long, but I defined an array of length 7? Why? This is because the last character in a string must be a 0 value, the string terminator, and we must make space for it.

    您是否注意到“ Flavio”的长度为6个字符,但是我定义了一个长度为7的数组? 为什么? 这是因为字符串中的最后一个字符必须为0值,即字符串终止符,并且我们必须为其留出空间。

    This is important to keep in mind especially when manipulating strings.

    记住这一点很重要,尤其是在处理字符串时。

    Speaking of manipulating strings, there’s one important standard library that is provided by C: string.h.

    说到操纵字符串,C: string.h提供了一个重要的标准库。

    This library is essential because it abstracts many of the low level details of working with strings, and provides us a set of useful functions.

    这个库是必不可少的,因为它抽象了许多使用字符串的底层细节,并为我们提供了一组有用的功能。

    You can load the library in your program by adding on top:

    您可以通过在顶部添加来将库加载到程序中:

    #include <string.h>

    And once you do that, you have access to:

    完成此操作后,您可以访问:

    • strcpy() to copy a string over another string

      strcpy()将一个字符串复制到另一个字符串上

    • strcat() to append a string to another string

      strcat()将一个字符串附加到另一个字符串

    • strcmp() to compare two strings for equality

      strcmp()比较两个字符串是否相等

    • strncmp() to compare the first n characters of two strings

      strncmp()比较两个字符串的前n字符

    • strlen() to calculate the length of a string

      strlen()计算字符串的长度

    and many, many more.

    还有很多很多

    I will introduce all those string functions in separate blog posts, but just know that they exist.

    我将在单独的博客文章中介绍所有这些字符串函数,但只知道它们存在。

    翻译自: https://flaviocopes.com/c-strings/

    c语言字符串与c++字符串

    展开全文
  • C语言字符串结束

    千次阅读 2019-10-08 04:49:58
    C语言字符串结束'\0' '\0'就是8位的00000000,为字符NULL,因为字符类型中并没有对应的这个字符,所以这么写。'\0'就是字符串结束标志。 1. 字符串变量str[] 在C语言中没有专门的字符串变量,通常用一个字符...

    C语言中字符串结束符'\0'

    '\0'就是8位的00000000,为字符NULL,因为字符类型中并没有对应的这个字符,所以这么写。'\0'就是字符串结束标志。

    1. 字符串变量str[]

    • 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

          参考:C 字符串常量和字符串变量定义和区别

    • 把一个字符串赋值给数组:u8 str1[]={"cxjr.21ic.org"};
      实际上数组str1在内存中的实际存放情况为:
      c x j r . 2 1 i c . o r g '\0'
      这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。

    2. 定义字符数组

    三种方式:

    u8 str1[]={"cxjr.21ic.org"}; //字符串赋值
    u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'}; //人工添加
    u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; //故意给数组预留一个空位

    注意:

    1. 当数组长度不够。假设我们指定了数组长度,如:u8 str1[13]={"cxjr.21ic.org"};
      由于字符组str1的长度为13,所以后面的信息会丢失,即'\0'丢失。

    2. 如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。如:

    u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};

    参考:C语言中字符串结束符'\0'

    转载于:https://www.cnblogs.com/TianchiLiu/p/9866134.html

    展开全文
  • C语言字符串回顾

    2015-03-16 12:19:37
    C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项。 C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度。 在程序里,一般会用strlen()函数或sizeof来获取一个...
  • c语言字符串处理

    2021-04-08 17:39:54
    strstr 字符串匹配 memset 内存空间填充函数 atoi/atol/atof 字符串转换 strtok 字符串分割 1.strchr字符匹配函数 在参数 str 所指向的字符串中搜索第一次出现字符c(一个无符号字)的位置。 char *strchr(const char...
  • java与C语言字符串结束上的区别

    万次阅读 多人点赞 2015-10-15 09:50:41
    综述:在C语言字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束,而在java语言中没有结束这一概念。具体见下面分析。 1. C 语言  在C语言字符串和字符数组基本上没有区别,都需要结束;如:char ...
  • NUL字节是字符串终止符,但是本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节。2.字符串长度字符串的长度就是它所包含的字符个数,可以通过对字符进行计数来计算字符串的长度。但是我们不需要这样做,...
  • c语言字符串单引号和双引号This Error: missing terminating (") character is occurred, when a constant string or text is not closed in double quotes either you missed closing quotes or using singe quote ...
  • C语言字符串结束'\0'

    千次阅读 2016-08-06 14:45:29
    本质 '\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。...原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串字符串总是以'\0'作为串的结束。因此当把一个
  • c语言字符串输入

    万次阅读 多人点赞 2018-08-28 10:56:36
    如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。 分配空间 1.char *name; 2.char name[81];   1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。  ...
  • C语言字符串函数总结

    2013-08-21 16:34:16
    C语言字符串函数总结: 1.字符处理库(ctype)中的函数 2.stdio中的字符串和字符输入/输出的函数 3.通用实用库stdlib中的字符串转换函数 4.字符串处理库string中的字符串处理函数 C语言的字符串实际上是存储...
  • c语言字符串 数字转换函数大全   atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换...
  • 当学习到C语言字符串的操作时,我们知道了字符串的定义方式,字符串的输出方式,其中包括字符串的输入输出语句,例如 puts,gets ,fputs 等。 还有字符串的操作函数, 例如 strcpy,strcmp,strcat,等。到最后明白函数...
  • C语言字符串输入

    千次阅读 2018-11-18 00:49:17
    如果想把一个字符串读入程序,首先必须预留存储该字符串的空间,然后用输入函数获取该字符串。 1.分配空间 要做的第一件事是分配空间,以储存稍后读入的字符串。 假设编写了如下代码: char *name; scanf("%s...
  • # include <... //"abc"字符串长度为4,因为最后一位是\0,而str是一个数组所以长度为5,但打印字符串时 //遇到\0会停止,所以也会打印出"abc" } 2cc929b0 abc 2cc929c0 abc 2cc929d0 abc 4 5
  • C语言 字符串 学习笔记 零,创建存储空间 **首先,c语言字符串都是用字符数组的形式来存储,并且在使用操作过程中不以数组形式出现(常常是数组名作为首地址单枪匹马) 创建固态存储空间: char zifu[MAX]; //创建...
  • strcpy: char *strcpy( char *strDestination, const char *strSource ); strcpy 函数将 strSource...返回值为目标字符串。由于 strcpy 不会在复制 strSource 前检查 strDestination 中空间是否足够,所以...
  • C语言字符串应用总结[转]

    千次阅读 2016-04-26 18:10:28
    今天总结了下C语言字符串函数。C语言字符串函数总结:1.字符处理库(ctype)中的函数2.stdio中的字符串和字符输入/输出的函数3.通用实用库stdlib中的字符串转换函数4.字符串处理库string中的字符串处理函数C语言的字符...
  • C语言字符串的概念 一串以NUL字节结尾的零个或多个字符。C语言不存在显式的字符串类型,字符串通常存储在字符数组中。 字符串常量 在程序中使用字符串常量会生成一个“指向字符的常量指针”,当一个字符串常量...
  • C语言中的字符串结束'\0'

    千次阅读 2019-04-14 16:43:08
    字符串以‘\0’结尾,作为对字符串长度识别的标志,‘\0’在ASCLL码表中代表NUL,十进制为0. 我写了一个函数,大致功能是将字符串A复制到字符串B中(此时B中为空),返回复制后NUL在B中的地址。 void main() { char ...
  • c语言字符串 数字转换函数大全 最近学数据结构老是做实验 常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下 方便以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成...
  • gets(str)函数和scanf("%s",str)区别: ...功能为: 1、 gets功能为读入一行,并将换行转换为字符串结束。 2、 scanf("%s",s);读入时,遇到空白字符,包括空格,制表,换行时均会停止输入。 从功...
  • C语言字符串输入与输出函数

    万次阅读 多人点赞 2015-01-15 14:57:49
    字符串输入&输出
  • 常用C语言字符串操作函数

    千次阅读 2011-10-09 20:36:56
    Linux下常用C语言字符串操作函数 stroul, strdup snprintf() atio   C中常用字符串操作函数 #include   size_t strlen(const char *s) 测量字符串长度s的实际长度。 例如s
  • C语言字符串用法大全

    2020-11-19 14:27:15
    C语言指针是非常重要的一块内容,也是比较难的一块内容。接下来我们来讨论一下有关指针的知识。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,651
精华内容 12,260
关键字:

c语言字符串终止符

c语言 订阅