c语言~请问这句代码有什么用??我删掉后没影响~~:a[i]='\0';
#include<stdio.h>#include<math.h>intmain(void){inti=0,j,m;chara[100];while((a[i]=getc...
#include<stdio.h>
#include<math.h>
int main(void)
{
int i=0,j,m;
char a[100];
while((a[i]=getchar())!='\n')
{
i++;
a[i]='\0';
}
for(j=0,m=i-j-1;j<m;j++,m--)
{
if(a[j]!=a[m])
break;
}
if(j>=m)
printf("这串字符是回文.\n");
else
printf("这串字符不是回文.\n");
return 0;
} 展开
#include<math.h>
int main(void)
{
int i=0,j,m;
char a[100];
while((a[i]=getchar())!='\n')
{
i++;
a[i]='\0';
}
for(j=0,m=i-j-1;j<m;j++,m--)
{
if(a[j]!=a[m])
break;
}
if(j>=m)
printf("这串字符是回文.\n");
else
printf("这串字符不是回文.\n");
return 0;
} 展开
6个回答
展开全部
在这个程序段中是没有影响的,不过'\0'作为字符串的结束标识,如使用printf ("%s", name), puts(name),strlen(name)等函数时,如果字符串中没有'\0',就会出现各种各样的错误了,所以最好还是加上。
追问
为什么我最近的三个问题个个都有你~~~~。。。。。。。
可是这句代码不是给a[i]赋值的么??(菜鸟求解。。。)
结束符只在结束的时候才能被赋值吗???一个字符串只能出现一次吧?
PS:在一个程序,或者一台电脑上意外状况都是一样的吗???我试过不加结尾,每次都是一样的弹出a~~
追答
应该是我最近比较无聊吧- -
在循环中可以看到,先执行i++,再执行a[i]='\0',所以无论输入到第几个元素,他的后一个位置一直都会被赋值为'\0',而再次获得字符时会覆盖前一个赋值的'\0',并重新赋值下一个位置为'\0'
当然,你也可以在全部获得字符串结束之后,在最后的位置加一个'\0',也是可以的,比如
while((a[i]=getchar())!='\n')
{
i++;
}
a[i]='\0';
展开全部
'\0'作为字符串结束符,作为编程标准,不过这里检测回文串倒是用不着
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'\0' :字符串结束标识符:结束符
单纯在你这个代码里面看,去掉看不到什么问题,因为a[i]没有多次复用。
加那一行代码是良好的编码习惯的养成。自己知道一个字符串什么时候结束,强行加上。
单纯在你这个代码里面看,去掉看不到什么问题,因为a[i]没有多次复用。
加那一行代码是良好的编码习惯的养成。自己知道一个字符串什么时候结束,强行加上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
作为字符串结尾标识符,不能删除,否则不知道你这个字符串在哪儿停止
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询