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;
}
展开
 我来答
wchyumo2011
推荐于2016-05-11 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2852万
展开全部
在这个程序段中是没有影响的,不过'\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';
翎2980493052
2015-08-20 · TA获得超过549个赞
知道小有建树答主
回答量:754
采纳率:100%
帮助的人:461万
展开全部
'\0'作为字符串结束符,作为编程标准,不过这里检测回文串倒是用不着
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hongyaofu
2015-08-20 · TA获得超过1088个赞
知道大有可为答主
回答量:1227
采纳率:87%
帮助的人:526万
展开全部
'\0' :字符串结束标识符:结束符
单纯在你这个代码里面看,去掉看不到什么问题,因为a[i]没有多次复用。

加那一行代码是良好的编码习惯的养成。自己知道一个字符串什么时候结束,强行加上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣马家沟
2015-08-20 · TA获得超过186个赞
知道小有建树答主
回答量:244
采纳率:61%
帮助的人:82.6万
展开全部
作为字符串结尾标识符,不能删除,否则不知道你这个字符串在哪儿停止
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
这人很BT人很
2015-08-20
知道答主
回答量:4
采纳率:0%
帮助的人:4539
展开全部
字符串结束符,有影响的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式