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()


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章