2011-09-23 19 views
0

我编写了一个程序来查找今天最长的公共子序列,并且我将每个序列的元素都放到了一个字符数组中。但我遇到了一个小问题。我用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次迭代结束这里也测试program.for循环!

+5

*叹*至少在您发布之前尝试编译代码。此外,循环肯定不会在5次迭代后终止,您应该在那里放置一些跟踪消息来看看它:/ –

+0

好吧,我编译过它。我试过在scanf语句后显示我。但它只是增加了两次。 –

回答

2

换行符('\n')也是字符。如果键入H<return>e<return>l<return>l<return>o<return>,他们已输入10个字符。

1

这是一个更好的主意,只是读取整个“阵列”作为一个字符串,一次全部:

char s[10]; 
fgets(s, sizeof s, stdin); 
1

让我猜猜,你的每个字符后,按returnscanf()电话也会读取这些...