D15. 学习基础C、C++语言

D15. 字元阵列(2)

前一篇有讲到字元的输出是printf("%c",a[i]);
而字串是printf("%s",a);
输出是一整个a而不用指定要输出哪一格

在输入方面的部分scanf("%s",a)一次可以取一个字串,但是缺点就是如果遇到空格的话只能读取到空格前的字串, 像是如果用scanf输入字串hello world时,只能记到hello而已,所以如果要读三个单字等於要开三个阵列,这样太 麻烦,这时我们就可以用gets()跟puts()

#include<stdio.h>

main()
{
 char b[15];
 gets(b);
 printf("%s\n",b);
 return 0;
}

但是使用gets()时,虽然已经设定阵列b的大小是15,如果输入的字超过15个却还是可以照样输出,这样的执行结果目前还不会造成太大的问题,其实这个结果已经造成缓冲区溢位(buffer overflow),也就是说多余的那些字元会到了未被分配的记忆体空间,如果那些记忆体空间已经存有资料,可能会擦除资料造成程序中止,所以也有另外一种函式叫做fgets()来替代gets()


<<:  javascript物件教学3

>>:  【Vue】Vue Router 设定路由| 专案实作

Gulp 基础介绍 gulp-postcss 与 autoprefixer DAY81

这里要来介绍如何优化 css 有时候我们因为要加前缀词(有的旧浏览器不支援,所以需要加) 但这会浪费...

【踩坑】 gradient 渐层背景要写在哪里?

起初刚学到设定颜色时,都是使用background-color来帮物件或是背景上色 於是在学到 gr...

Day19,ArgoCD ( 2 / 2 )

正文 今天要来Demo ArgoCD上透过Gitlab的SSO与权限控管 先创建一个namespac...

Spring Framework X Kotlin Day 4 MVC

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

Kubernetes 和云原生教程

Kubernetes 开源有 6 年时间了,为什么还要写一篇 Kubernetes 入门的文章?”...