[分享]一不小心发现了一个问题
前几天在编代码时,一个不太明显的问题,让我郁闷了良久,类似一列问题:
#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你
记得在线啊
----------------解决方案--------------------------------------------------------