字符串一定要确保有结束符
答:字符串里每个字符占一个字节,‘/0’是每个字符串必须有的。也占一个字节。字符串是以字符数组的形式存储的。
答:有一点你一定要记住,那就是永远都要保持字符串后面有结束标记!对,永远!至于什么时候要手动添加,这就要看你自己的处理了。如果你调用系统的一些函数,诸如strcpy(),strcat()这些函数,那就没有必要添加,因为他们自己会处理。但是如果你写一个循环来自己修改字符串的话,那就一定要想想是否应该添加结束...
答:不过字符串也不一定要有结束符,取决于你的输出方式,用%s输出是要结束符 数组中存储的是数字,根据数字的大小选择合适的类型,所以不需要结束符 结束符=你说的休止符
答:这二种初始化方式的区别在于第一种方法是存储了5个字节的内容,即能看到的个字母,外加一个字符串结束符'\0'。这样才能正确地以%s的形式来输出这个字符串;而第二种方法则是只存储了4个字母,但是却没有字符串结束符,所以它不能以%s的形式正确输出。如果也要以%s的形式输出这个字符串,那就应该...
答:是字符串常量最后有一个结束符号。所以,在变量初始化那里,char x[ ]=“abcdefg”,把字符串常量赋值给数组,数组x元素个数就多了一个结束符号。而y数组是按照字符赋初值的,所以y元素个数就是字符个数。所以这里如果用字符串函数strlen获取长度,只有x能正常获取。
答:因为判断一个字符串的结束的话一定要用一个结束符,如果没有了这个符号就不能确实复制到那里就停止或者这个字符串显示到哪里。而且用双引号引起来的 "xxx" 已经带了结束符了,所以不用手动加上,而数组里面的则不是这样。
答:按照约定,直到发现'\0'才停止输出。在这期间可能会碰到两个问题,一是,确实有一个字节的值为0,二是,读到某区域“不能读”时,就会停止输出,当然,在停止输出前,频幕上可能已经乱码一片了。
答:1、结束标志不同 字符串:必须以'\0'结尾;// ‘ \0 ’ 的意义是“字符串结束符”。字符数组:可以包含多个'\0',但是如果当做字符串处理,则实际有效字符串为第一个'\0'的签名的字符串,如果当做字符数组处理,可以处理字符数组的任何一个字符,所有的字符都可以是'\0'。2、特点不同...
答:因为你没有对数组进行初始化啊,所以数组中每一项是一个随机值,编译器会在数组末尾往后第n个地址的值初始化为0,n的值看编译器而定,所以,如果你定义aa[1],在vc6上,会在a[0]后的第七个字节变成0,如果是10,那就是a[9]后面第五个,所以你输出会是15,我想这个也是为了预防内存的非法访问...
答:C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符'\0',而字符数组不需要。如刚才声明的a[10]是一个含有10个元素的字符数组,它也能存放含有9个元素的字符串。第二种方式是直接用指针。语句是:char *a;用指针声明的字符数组,大多数功能与字符数组表示字符串相同。但也有...
网友评论:
于梵13830469260:
c语言字符串操作 -
37327堵鲁
: A)char s[5]={'a','b','c','d','e'}; //没有结束符 '\0',字符串中最后 一位一定要有结束符 c) char *s;s="ABCDEF"; //s是一个字符指针,"ABCDEF"是一个常量字符的首地址,因此赋值没问题 d) char s[5];scanf("%s",&s);//s[5]是一个字符数组,s...
于梵13830469260:
字符串结束符什麽时候一定要手动添加 c语言 -
37327堵鲁
: 有一点你一定要记住,那就是永远都要保持字符串后面有结束标记!对,永远!至于什么时候要手动添加,这就要看你自己的处理了.如果你调用系统的一些函数,诸如strcpy(),strcat()这些函数,那就没有必要添加,因为他们自己会处理.但是如果你写一个循环来自己修改字符串的话,那就一定要想想是否应该添加结束标记,在哪儿添加结束标记.还是最开始的原则,你要保证字符串经过处理之后,后面一定有结束标记,即使是空字符串也不例外.
于梵13830469260:
c语言里面操作字符串有时要字符串长度做变量,有时不要? -
37327堵鲁
: 要求给定字符串长度是为了确保安全,避免由于字符串中没有结束符'\0'导致严重错误. 这在一些安全性要求特别高的场合非常重要.比如字符串拷贝时如果没有指定字符串长度,而又没有'\0'的话,就会一直进行内存操作直到被系统中断,被中断时很可能就已经把自己或者其他程序的内存给破坏了. 但是每次调用函数时都指定长度的话,对于某些需要临时计算长度的场合,效率就非常低了. 所以,要求给定长度是为了安全,不给定长度是为了效率(一定要确保字符串有结束符'\0').
于梵13830469260:
C语言中一定要为连接后的新字符串添加字符串结束标志么 -
37327堵鲁
: 不加也可以那是因为你运气好,正好最后一个是0..你编译个release版本是试试.就不一定了
于梵13830469260:
C语言规定:在每一个字符串的结尾加上一个( )以便系统数据此判断字符串是否结束. -
37327堵鲁
: ()里是填东西把.\0
于梵13830469260:
字符串为何要以\0结束,没有\0会怎样? -
37327堵鲁
: 字符串是借助于字符型一维数组来存放的,'\0'ASCLL代码值为0,它作为标志占用存储空间但不记入串的实际长度,所以用来作为字符串的结束标志.有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了.
于梵13830469260:
C语言字符串的结束标记的问题 -
37327堵鲁
: 终止符是输入函数自己添加的,不是手工输入的 比如char s[100];scanf("%s\n", s); 这时候比如你输入了abcdefg,其实scanf会把这7个字符加上一个\n放入s数组的0-7
于梵13830469260:
在VC++字符串的复制中,为什么复制的数组结尾要加一个结束符号?
37327堵鲁
: 因为判断一个字符串的结束的话一定要用一个结束符,如果没有了这个符号就不能确实复制到那里就停止或者这个字符串显示到哪里. 而且用双引号引起来的 "xxx" 已经带了结束符了,所以不用手动加上,而数组里面的则不是这样.
于梵13830469260:
c语言问题..通常数组后面有个a[i]='\0';这有什么用表示什么求详解. -
37327堵鲁
: 给字符串加一个结束符而已,字符串必须以\0作为结束符 这种手法是确保在数组内存范围内有结束符,避免出现越界的现象
于梵13830469260:
字符串数组末尾才有'\0'结束符号吗?字符数组有没有 -
37327堵鲁
: 是的! a[]={'a,''b','c'} 其实等于a[]={'a,''b','c','\0'}; 你要是用sizeof(a)看的话其大小是等于4 由于很多字符串处理函数和宏,如strcpy,memcpy之类的都是以字符串的结束符作为函数完成的终点,所以字符串数组都要以结束符结束. 其实数值数组也是一样的,要是没有结束符也会越界,只是数值数值一般不会被用在strcpy之类函数中.