【c】无限制输入字符

我们做题有时候会碰上这种的输入,一直输入字符,

下面附上两种解决办法

方法1:

char s[10000];
    int i=0;
    int arr[1000]={0};
    while(scanf("%c",&s[i])!=EOF)
    {
        i++;
    }

这样你就可以一直输入,换行符,空格也是可以被读取的

我们这样输入,不算结尾的ctrl+z,有20个字符(两个空格)

i值也是20

假如我们想看各个元素的值,我们可以利用for循环打印出来,或者进行调试看

空格,换行符也被打印了出来,虽然打印到s[19],但是s[20]也可以打印,就是EOF(也就是-1)

下面附上第二种方法

方法2:

while ((ch[i] = getchar()) != EOF)//不断输入字符,换行符\n也能被读取,不想输入时候按ctrl+z
{
    i++;
}

同理和上面的一样,这次我们来调试看看数组中结果

注意【21】【22】,21是输入最后一个回车,22则是按得ctrl+z

并且能·看到i的值也是22,代表22个字符(不算最后的-1)

注意输入的字符最后没有\0,不要用strlen求字符串长度,strlen求字符串长度遇到\0才停止(不计算\0)

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值