前言:线上期中考试终于过去了@(你懂的)


正题:开始补c实验课的题目了...

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

从这题中,我使用了gets来输入字符串,如果是一维数组,只要gets(数组名);二维数组,要gets(a[0|...])多话

我们常常会看到在for循环的时候总是要加上!='\0',这又是为什么。。我觉得可偷懒就偷懒吧。

char a[1][80] ;
gets(a[0]);
for(i=0;i<80;i++)
   printf("%d\n",(int)a[0][i]);

我们的结果就是
QQ图片20200425204051.png
是不是看到结果很卧槽?明明应该到第一个0就可以停止了,但是却莫名其妙地还有这么长。
那是因为数组长度80,但我们只输入了3个,而gets又不会计算string的大小,于是就成了这样的没有初始化的鬼样。

因为我们给char a[1][80] = {22} ;先初始化,接下来再输出

QQ截图20200425204453.png

会发现后面都是0,做到了初始化-(为什么第5个开始不是22,我想是gets后重构了一遍吧)

看到这里,我们似乎明白了为什么要加!='\0'了吧,就是为了省去这该死的初始化问题....造成的麻烦

版权属于:染念
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2021年04月29日 09:06
0
发表评论


180 文章数
673 评论量
4 分类数
184 页面数
已在风雨中度过 7年68天17小时5分
目录
来自 《对‘\0’的印象深刻----c语言折腾日记3》
© 2024 染念Blog
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部
© 2024 染念Blog
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部