我目前正在关注c编程的K & R书,我遇到了使用printf()函数和数组的问题。数组应该保存的所有东西都是正确的,因为我已经测试了在初始while循环内打印每个元素,但是当我尝试在while循环之外和main()函数内打印时,我没有得到所需的答案。这是代码。使用For循环编程打印一维数组C
for(i=0;i<10;++i){
ndigits[i]=0;
}
while((c=getchar())!=EOF){
if(c>='0'&&c<='9'){
++ndigits[c-'0'];
}
else if(c==' '||c=='\t'||c=='\n'){
++nblank;
}
else{
++nother;
}
}
for(i=0;i<10;++i){
printf("%d ", ndigits[i]);
}
printf(" blank space: %d other: %d\n", nblank, nother);
这个程序应该计算空格,其他字符和存储每个数字在数组中的出现次数。当我注释掉for循环打印数组时,计算空格和其他字符可以正常工作。然而,当我运行程序时没有注释掉打印数组,它只打印数组中的第一个元素,即零的数目,在它旁边有^ C,并且甚至不会到达数字白色的最后一行空间和其他字符被打印。
它是通过键盘btw用户输入,我使用记事本++和MinGW作为我的编译器。
ex。
Input: 1353466113 udahkdakdjf
Output: 0 ^C
Input: 000000
Output: 6 ^C
我已经测试我的程序与放置while循环中的printf()函数来检查数组是否持有正确的价值观和它的作用。所有的帮助非常感谢。
什么是这些东西? _ ++ ndigits [c-'0']; __if(c> ='0'&& c <='9'){_ –
请发表整个代码。只使用您发布的部分,代码对我来说工作得很好:'1353466113 udahkdakdjf' - >'0 3 0 3 1 1 2 0 0 0空格:2其他:11'和'000000' - >'6 0 0 0 0 0 0 0 0 0空格:1其他:0'。我的完整代码在这里http://pastebin.com/yG7E95WF – twj
@Digital_Reality该代码正在增加阵列中数字的发生。 – Rahul