给你一个检验输入是否为整数的函数getint(),调用时只需要如下语句:int i = getint()就可以读入一个整数了。
创新互联公司长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为浪卡子企业提供专业的成都网站设计、网站建设,浪卡子网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
/***************该函数检验输入是否为整数*********************/
#include stdio.h
#include stdlib.h
int getint ()
{
char c[20];
int i = 0;
label:
/* 读入一个字符串 */
scanf ("%s", c);
/* 检查该字符串是否为数字 */
while (c[i] != '\0'){
/* 如果有一个字符的ASCII码小于48或者大于57,则输出提示信息,返回label语句,重新读入 */
if (c[i]48 || c[i]57){
printf ("输入变量类型不正确\n");
printf ("请重新输入一个整数:");
i = 0; /* 循环变量清零不能忘!*/
goto label;
}
i++;
}
/* 如果全部为整数,则将字符串转化为整数 */
return atoi (c);
}
可以。
例如:
float a;
printf("Please input a:\n");
if (scanf("%f",a)==1) printf("your input is: %g\n",a);
else printf("input error\n");
如果你输入 数据格式 正确 它打印输入数据,否则打印 出错。
例如,输入 123, 输出 your input is: 123
例如,输入 abc, 输出 input error
函数定义时在函数名后的圆括号的参数叫“形式参数”,简称“形参”;调用该函数时在函数名后的圆括号内的参数叫“实际参数”,简称“实参”。
int Add( int num1 , int num2) /* num1和num2为形参 */
{
return num1 + num2;
}
void main()
{
int a, b, value
a = 1;
b = 3;
value = Add (a, b); /* a和b为实参 */
printf("%d + %d = %d\n", a, b, value);
}
在C语言中,所谓的“输入参数”就是指形参;当形参使用引用传递时,输入参数也可以当作输出参数。
GetNumber()没有形参,也就没有输入参数。至于该函数体内部的变量c及输入语句,只能算是该函数的局部变量及赋值语句而已。简单来说,函数有没有输入参数,只要看函数名的圆括号内是否有参数即可。
1.使用strlen函数来判断输入是否为空,如果返回值为0,就是空。
strlen做的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。
原 型:extern unsigned int strlen(char *s);
头文件:string.h
格 式:strlen (字符数组名)
功 能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说 明:返回s的长度,不包括结束符NULL。
2.例程:
#include stdio.h
#include string.h
int main(){
char s[1000];
while (gets(s)!=NULL){ //循环读入s
if(0strlen(s)) //根据判断输出输入是否为空
printf ("%s 不为空",s);
else
printf ("%s 为空",s);
}
return 0;
}
C语言输入输出函数有很多,bai标准I/O函数du中包含了如下几个常用的函数:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int scanf(const char *format, arg_list)
scanf主要从标准zhi输入流中获取dao参数值,format为指定的参数格式及参数类型,如scanf("%s,%d",str,icount);
它要求在标准输入流中输入类似"son of bitch,1000"这样的字符串,同时程序会将"son of bitch"给str,1000给icount.
scanf函数的返回值为int值,即成功赋值的个数,在上例中如果函数调用成功,则会返回2,所以我们在写程序时,可以通过
语句if(scanf("%s,%d",str,icount) != 2){...}来判断用户输入是否正确.
int printf(const char *format, arg_list)
printf主要是将格式化字符串输出到标准输出流中,在stdio.h头文件中定义了标准的输入和输出,分别是stdin,stdout.
arg_list可以是变量名,也可以是表达式,但最终都会以值的形式填充进format中.
int getc(FILE *fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为:(ch = getc(fp)) != EOF.EOF为文件结束标志,
定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin
时,getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.
int getchar(void)
getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又
涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符
串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:
while ((c = getchar()) != '#')这是以#来结束的.
int putchar(int ch)
putchar(ch)主要是把字符ch写到标准流stdout中去.
char * gets(char *str)
gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.
int puts(char *str)
puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.
char *fgets(char *str, int num, FILE *fp)
str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数
不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.
int fputs(char *str, file *fp)
fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.
int fgetc(FILE *fp)
fgetc从fp的当前位置读取一个字符.
int fputc(int ch, file *fp)
fputc是将ch写入fp当前指定位置.
int fscanf(FILE *fp, char *format,...)
fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.
int fprintf(FILE *fp, char *format,...)
fprintf将格式化数据写入流式文件中.
使用ctype.h里面isdigit()和isalpha函数就可以判断了
#include ctype.h
#include stdio.h
int main()
{
printf("1 是数字吗? %s\n",isdigit('1')?"是":"不是");
printf("a 是字母吗?%s",isalpha('a')?"是":"不是");
return 0;
}