对‘\0’的印象深刻----c语言折腾日记3

简介: 正题:开始补c实验课的题目了...输入一行字符,统计其中有多少个单词,单词之间用空格分隔开从这题中,我使用了gets来输入字符串,如果是一维数组,只要gets(数组名);二维数组,要gets(a[0|...])多话

正题:开始补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]);

我们的结果就是

3160140474.png

是不是看到结果很卧槽?明明应该到第一个0就可以停止了,但是却莫名其妙地还有这么长。

那是因为数组长度80,但我们只输入了3个,而gets又不会计算string的大小,于是就成了这样的没有初始化的鬼样。

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

3543345482.png

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

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

目录
相关文章
|
8月前
|
算法 Java C语言
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
【c语言基础题】— —第一版,可当作日常练习和期末复习,有奇效哟!
|
8月前
|
存储 人工智能 算法
【C语言】自学终极笔记
【C语言】自学终极笔记
110 0
|
8月前
|
存储 IDE 编译器
c语言选择题常见知识点汇总 ------持续更新
当使用free释放掉一个指针内容后,指针变量的值不会被置为NULL,free不会更改指针指向、32位系统下任何类型指针的长度都是4个字节、指针的数据类型声明的是指针实际指向内容的数据类型、野指针是指向未分配或者已经释放的内存地址
|
JavaScript PHP C语言
c语言的折腾日记01
?:这所谓的条件运算符是否有缩写 用过php的知道,是存在缩写的,当然百度了也是说有的 于是实测,发现c也是有缩写的,所以对于三目运算符的定义有点啪啪响了- -
39 0
|
编译器 C++
《C++避坑神器·十八》运算符重载,小白也能看懂
《C++避坑神器·十八》运算符重载,小白也能看懂
53 0
|
人工智能 算法 Serverless
力推C语言必会题目终章(完结篇)
力推C语言必会题目终章(完结篇)
57 0
|
存储 编译器 C语言
C语言第四课--------要我们一起快乐的学习吧1
C语言第四课--------要我们一起快乐的学习吧
C语言第四课--------要我们一起快乐的学习吧1
|
存储 C语言
C语言第四课--------要我们一起快乐的学习吧2
C语言第四课--------要我们一起快乐的学习吧
|
C语言
c语言第二课------地基打牢,基础打紧,不可放弃2
c语言第二课------地基打牢,基础打紧,不可放弃
169 0
|
C语言
c语言第二课------地基打牢,基础打紧,不可放弃1
c语言第二课------地基打牢,基础打紧,不可放弃