你好,这个代码中for语句的a[i]!='\0';里面的那个'\0'是什么意思?能不能在每行标个注释呢?新手,望见谅

作者&投稿:铎胆 (若有异议请与网页底部的电邮联系)
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'也一同拷贝。
但是……也有一些例外情况发生。比如,当数组长度不够。假设我们指定了数组长度,如:u8 str1[13]={"cxjr.21ic.org"};由于字符组str1的长度为13,所以后面的信息会丢失,即'\0'丢失。另外,如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。如:u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'};如果希望数组以'\0'结束,则要么写成:u8 str1[]={"cxjr.21ic.org"};要么写成(人工添加'\0'):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'};。

扩展资料:
C语言书写规则:一个说明或一个语句占一行;用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行;低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
参考资料:
百度百科-C语言

'\'是个转义符,'\0'他的值就是0,那你问为什么不直接用0,如果用0的话编译器至少得把他当做整数来对待,就占4个字节,'\0'强调了是一个字节的0值,类似的还有比如(0xD),
(0xA),很多键盘无法输入的或者在源代码中不能更好表达的就用转义符来代替了

‘\0'表示一个字符串的终结,是终结符
#include <stdio.h>
void main()
{
char a[5];
int i,j;
scanf("%s",&a)//读入字符串到变量a
for(i=0;a[i]!='\0';)//循环,只要当前字符不为终结符就不断将i+1,意图找到字符串的末尾
i++;
printf("%d\n",i);//输出 字符串长度i

for(j=0;j<i;j++) printf("%c",a[j]);//依次顺序输出a中每一个字母

printf("\n");//输出回车
for(j=i-1;j>=0;j--) printf("%c",a[j]);//逆序将a中的字母依次输出一遍
}

即:求字符串长度,顺序输出,再逆序输出
啊啊,为了抢第一个回答,来来回回修改了好多遍,这次应该没什么问题了

C语言for语句加{}和不加{}有什么区别?
答:你好,很高兴为你答疑。为了程序的易读,一般是提倡加括号的,那样for函数执行的主体清晰明了。不加括号的时候,默认该for函数执行的是紧跟其后的1函数或语句。比如:for(;;){ for(;;){ } } 这里面外层的for不佳括号也可以的。但是如下:for(;;){ for(;;){ } printf("");} 这样的话外层...

for语句的循环嵌套是从里道外还是从外到里?大圈→小圈还是小圈→大圈...
答:你好,for语句嵌套是从内往外,也就是小圈往大圈。

C语言递归for语句的循环问题
答:首先,这里面有三个for语句,而且三个for语句是有关联的,很容易造成混淆,这时就需要用{}来归类整合,这样才能层次分明。其次,这个程序是错误的,for语句如果不用{}的话,只对一条语句循环,第三个for语句的j=3不变,而i从0到7变化,x被循环不断赋值,最后的x=a[7][3],而只有a[0][0]到...

for(int i=0;i<10;i--){ //--- }这段代码的运行情况是:() A. 运行...
答:楼主你好,请问这是C语言中的代码还是C++中的呢?如果是C++中的这个for循环是可以编译,因为循环条件是i<10,由于i的初始值的0,而且执行i--操作,故满足循环条件i<10,但没有终止条件(如果在循环体中不修改i的值的话),故选B。要是在C语言中int i就得到for循环外面先定义1个int变量i,如:...

想问问下面这个for循环语句怎么转换为while循环语句!~~~
答:你好。include <stdio.h> int main (void){ int n=1, number, triangularNumber;printf ("What triangular number do you want? ");scanf ("%i", &number);triangularNumber = 0;while(n<=number){ triangularNumber += n;n ++;} printf ("Triangular number %i is %i\n", number, ...

关于BAT FOR语句问题。
答:上面那个人回答得比较具体了。bat都是大格式中套小格式的。(for……)

C语言,这句话是什么意思?
答:for语句的形式是for(语句1;语句2;语句3),一般情况下,语句2是判断语句,用于控制循环的。for语句的执行是先执行语句1,再执行判断语句2,若成立,则执行for循环中的语句;不成立就跳出循环。执行过循环里的语句后,再执行语句3,然后再执行判断语句2,以此类推,知道判断语句不成立,就跳出循环,执行...

C语言中for循环语句 for(i=1;i<10;i++)这个一共执行几次 我总是无法...
答:首先要知道for语句的执行原理,这样你就知道答案了:现在以 for(i=1;i<10;i++)为例说明如下:1.:运行到for语句时,让i=1,但这只执行一次。也就是说for语句中第一个分号前的语句只执行一次,就是相当于初始化 2.:判断第二个分号前的代码是否为真 如果为假则退出for语句,就不执行for语句...

如何让for循环语句中的i每次加二
答:输出请使用语句 printf("%3.0f %6.1f\n", fahr, celsius);/ int main(){ int repeat,lowerF,upperF;float celsius,fahr;int i,j;printf("输入一个正整数repeat (0<repeat<10):");scanf("%d",&repeat);for(j = 0; j < repeat; j++){ printf("输入一个正整数lower:");scanf("...

linux使用vim编写的for语句帮忙看看有什么问题?
答:题主你好,你的问题应该是在:for UNAME in 'cat users.txt'这一行.这块有个很容易忽视的点,就是放在反引号中的内容才会被识别为命令,而放在单引号中的只会被识别为字符串,所以将上面这一句改为:for UNAME in `cat users.txt`即可,注意只是将单引号改为反引号. Esc键下面那个键就是反引号键 --...