当前位置: 代码迷 >> C语言 >> [分享]一不小心发现了一个问题
  详细解决方案

[分享]一不小心发现了一个问题

热度:248   发布时间:2007-04-06 17:51:41.0
[分享]一不小心发现了一个问题
前几天在编代码时,一个不太明显的问题,
让我郁闷了良久,类似一列问题:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int array[5];
int i;
clrscr();
for(i=0;i<5;i++)
scanf("%d ",&array[i]);
for(i=0;i<5;i++)
printf("%d ",array[i]);
getch();
}
请运行一下看,看你有没有发现问题?
搜索更多相关的解决方案: 一不小心  分享  

----------------解决方案--------------------------------------------------------
scanf("%d%*c",&array[i]);
或者scanf("%d",&array[i]);

[此贴子已经被作者于2007-4-6 18:04:50编辑过]


----------------解决方案--------------------------------------------------------
6
----------------解决方案--------------------------------------------------------
LS道出了问题的本质,
你输入数据的时侯一定得是6个数据才能
结束:
for(i=0;i<5;i++)
scanf("%d ",&array[i]);这个循环.
我搞了良久才发现:
我把%d后的空格符去掉,这时才正常,
不知道这是为什么?
----------------解决方案--------------------------------------------------------
clrscr();为什么VC++上显示
C:\Program Files\Microsoft Visual Studio\MyProjects\cheng\ddd.cpp(7) : error C2065: 'clrscr' : undeclared identifier?
----------------解决方案--------------------------------------------------------

你在头文件里加一下:
#include <dos.h>

把clrscr();改成:system("cls");


----------------解决方案--------------------------------------------------------

clrscr();是DOS下的东西
VC是WIN下的东西


----------------解决方案--------------------------------------------------------

看看scanf的格式就行了


scanf("%d ",&array[i]);
scanf("%d\n",&array[i]);
scanf("%d\t",&array[i]);
scanf("%d\r",&array[i]);
... ... 这里的"空格" ,"制表符"或"换行符"等都表示输入流格式中的"空白字符" ,当使用空白字符的时候,必须遇到第一个非空白字符才可以停止,但不保存数据

你给了5个存储位置,所以必须读6个非空白字符才可以结束


----------------解决方案--------------------------------------------------------

嗯 ,要严格根据格式控制来,在C语言中总结有,只不过不是很清楚

[此贴子已经被作者于2007-4-6 23:09:02编辑过]


----------------解决方案--------------------------------------------------------
ls 好久没看到你了
明天Q你
记得在线啊
----------------解决方案--------------------------------------------------------