我试图读取一个字符集合,一个接一个地输入(带有空格),并将它们全部保存在一个数组中。例如,输入“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”)。
我真的完全不知道它为什么会这样。任何提示都会很有帮助:)。
1条答案
按热度按时间plicqrtu1#
格式规范
"%c"
允许读取所有字符,包括白色字符(特别是新行字符'\n'
)而是写
注意格式说明中的前导空格。它允许跳过白色字符。
这就是函数的样子