【c】无限制输入字符

【c】无限制输入字符_第1张图片

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

下面附上两种解决办法

方法1:

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

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

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

i值也是20

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

【c】无限制输入字符_第2张图片

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

下面附上第二种方法

方法2:

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

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

【c】无限制输入字符_第3张图片

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

【c】无限制输入字符_第4张图片

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

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

你可能感兴趣的:(c语言,算法,数据结构)