c语言输入参数是数组,C语言中数组几种输入法的区别

1.for循环输入

缺点:

1.)不能通过getchar()从键盘上获得字符'\0',所以如果你想输入的是字符串,处理起来比较麻烦;比如,你想输入“china”字符串的话,你不得不这么写

for(i=0;i<5;i++)

a[i]=getchar();

a[5]='\0';

优点:

引入变量i,很方便控制你想输入的长度,并且不会造成溢出问题,比如,你想输入33个字符,你只要i<33,然后输入就好,不用像gets,scanf那样去数。

--------------------------------------------

2.gets()

缺点:

个人觉得没什么缺点,目的用来输入字符串,允许输入空格,回车符做为字符串输入结束的标志。但是,你必须定义一个足够大的数组,防止输入的字符数超过数组长度而造成溢出错误。

优点:

如果你想输入带有空格或制表符的字符串,用它最合适啦~

-----------------------------------------------

3.scanf()

缺点:

输入的字符串不能带有空格,制表符,回车,scanf默认这些是结束输入的标志。表达形式上没有gets()简洁.同样,也必须将数组定义的足够大,会造成不必要的内存浪费。

scanf()的参数为地址,容易忘记写&,出错几率大

优点:

同gets()一样,可以实现字符串的整体输入,并自动补'\0',不用像第一种方法那样麻烦

--------------------------------------------------

如果你输入:abc dsdadsa,且只取前5个的话,只有第一种可以,各有利弊

实现如下:

1.char a[6];

int i;

for(i=0;i<5;i++)

a[i]=getchar();

a[5]='\0';

printf("%s",a);

2.gets();必须定义长度为5的字符数组,输入超过5个,容易溢出,不推荐

3.scanf();默认空格结束,实现起来相当麻烦,不推荐

------------------------------------------------

总结下,

如果你想输入的字符串长度已经确定,用for会节省内存,但不要忘了最后加'\0'

如果你想输入的字符串长度不确定,用gets(),scanf()会好一些,但要定义足够大的数组,可能会造成内存浪费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值