怎样才能只得到一种特定类型的数据,例如字符型数据?
与几乎所有有关计算机科学的问题一样,这个问题的答案也依赖于你要做什么。例如,如果你要从键盘上读入字符,你可以使用scanf():
scanf("%C",&c);
此外,你也可以使用一些现成的C库函数:
c=getchar();
这些方法所产生的结果基本上都一样,只不过使用scanf()能为程序员提供更多的安全性检查。
如果要接收其它类型的数据,有两种方法可供使用。你可以逐个字符地读入数据,并且每次都检查读入的数据是否正确。你也可以使用scanf(),并通过检查其返回值来确定读入的数据是否都正确。
你可以用第二种方法简单而高效地读入一串记录,并检查它们是否都正确。下例就实现了这一点:
#include<stdio.h>
main()
{
int i,a,b:
char c;
void ProcessRecord(int,int,char);
for(i=O;i<i100;++a)/*Read 100 records*/
{
if(scanf("%d%d%c",&a,&b,&c)!=3)
printf("data line %d is in error.\n");
else
ProcessRecord(a,b,c);
}
return(O);
}
scanf("%C",&c);
此外,你也可以使用一些现成的C库函数:
c=getchar();
这些方法所产生的结果基本上都一样,只不过使用scanf()能为程序员提供更多的安全性检查。
如果要接收其它类型的数据,有两种方法可供使用。你可以逐个字符地读入数据,并且每次都检查读入的数据是否正确。你也可以使用scanf(),并通过检查其返回值来确定读入的数据是否都正确。
你可以用第二种方法简单而高效地读入一串记录,并检查它们是否都正确。下例就实现了这一点:
#include<stdio.h>
main()
{
int i,a,b:
char c;
void ProcessRecord(int,int,char);
for(i=O;i<i100;++a)/*Read 100 records*/
{
if(scanf("%d%d%c",&a,&b,&c)!=3)
printf("data line %d is in error.\n");
else
ProcessRecord(a,b,c);
}
return(O);
}