c# 逐个将字符读入数组时出现问题(C)

lc8prwob  于 2023-06-20  发布在  C#
关注(0)|答案(1)|浏览(212)

我试图读取一个字符集合,一个接一个地输入(带有空格),并将它们全部保存在一个数组中。例如,输入“a B c d e f”将在字符串(数组的字符)中保持为“abcdef”。然而,当我尝试一个接一个地读取两个数组的内容时,问题就出现了,就像下面这样:

void receive_pool_content (char pool[], int pool_size)
{
    for (int i=0; i<pool_size; i++)
    {
        scanf("%c", &pool[i]);
        if (pool[i]==' ') --i;
    }
}

int main()
{
    char pool1[6];
    char pool2[6];
    receive_pool_content(pool1,6);
    receive_pool_content(pool2,6);
  printf("%c", pool2[5]);
    return 0;
}

第一个数组pool1输出正常(“abcdef”),但第二个数组缺少第一个字母(对于输入“q w e r t y”,输出为“\nqwert”)。
我真的完全不知道它为什么会这样。任何提示都会很有帮助:)。

plicqrtu

plicqrtu1#

格式规范"%c"允许读取所有字符,包括白色字符(特别是新行字符'\n'
而是写

scanf( " %c", &pool[i]);
       ^^^

注意格式说明中的前导空格。它允许跳过白色字符。
这就是函数的样子

void receive_pool_content (char pool[], int pool_size)
{
    for (int i=0; i<pool_size; i++)
    {
        scanf(" %c", &pool[i]);
    }
}

相关问题