前言:线上期中考试终于过去了
正题:开始补 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]);
我们的结果就是

是不是看到结果很卧槽?明明应该到第一个 0 就可以停止了,但是却莫名其妙地还有这么长。 那是因为数组长度 80,但我们只输入了 3 个,而 gets 又不会计算 string 的大小,于是就成了这样的没有初始化的鬼样。
因为我们给char a[1][80] = {22} ;先初始化,接下来再输出

会发现后面都是 0,做到了初始化-(为什么第 5 个开始不是 22,我想是 gets 后重构了一遍吧)
看到这里,我们似乎明白了为什么要加!='\0'了吧,就是为了省去这该死的初始化问题....造成的麻烦
