我正在编写一个程序来查找今天最长的公共子序列,并且我将每个序列的元素转换为字符数组。但我遇到了一个小问题。我使用for循环来获取元素,但无论我设置循环应该执行的迭代次数有多高,它总是在5次迭代后终止。输入数据的数组是一个大小为10的数组,因此数组大小没有问题。我编写了一个小的测试程序来检查,甚至在测试程序中,获取字符数组数据的for循环总是在5次迭代后终止。为什么?(我在实验室中被迫使用turbo c ++)
#include<stdio.h>
void main()
{
int i;
char s[10];
for(i=0;i<10;i++)
scanf("%c",&a[i]);
}
上面的代码是测试程序。在这里也经过5次迭代后循环终止!
答案 0 :(得分:2)
换行符('\n'
)也是字符。如果您输入H
,<return>
,e
,<return>
,l
,<return>
,l
,<return>
,o
,<return>
,他们输入了10个字符。
答案 1 :(得分:1)
将整个“数组”作为单个字符串一次性读取是一个更好的主意:
char s[10];
fgets(s, sizeof s, stdin);
答案 2 :(得分:1)
让我猜一下,你在每个角色后按return
? scanf()
电话会同时阅读这些内容......