給你一個檢驗輸入是否為整數(shù)的函數(shù)getint(),調(diào)用時只需要如下語句:int i = getint()就可以讀入一個整數(shù)了。
創(chuàng)新互聯(lián)公司長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為浪卡子企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),浪卡子網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
/***************該函數(shù)檢驗輸入是否為整數(shù)*********************/
#include stdio.h
#include stdlib.h
int getint ()
{
char c[20];
int i = 0;
label:
/* 讀入一個字符串 */
scanf ("%s", c);
/* 檢查該字符串是否為數(shù)字 */
while (c[i] != '\0'){
/* 如果有一個字符的ASCII碼小于48或者大于57,則輸出提示信息,返回label語句,重新讀入 */
if (c[i]48 || c[i]57){
printf ("輸入變量類型不正確\n");
printf ("請重新輸入一個整數(shù):");
i = 0; /* 循環(huán)變量清零不能忘!*/
goto label;
}
i++;
}
/* 如果全部為整數(shù),則將字符串轉(zhuǎn)化為整數(shù) */
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");
如果你輸入 數(shù)據(jù)格式 正確 它打印輸入數(shù)據(jù),否則打印 出錯。
例如,輸入 123, 輸出 your input is: 123
例如,輸入 abc, 輸出 input error
函數(shù)定義時在函數(shù)名后的圓括號的參數(shù)叫“形式參數(shù)”,簡稱“形參”;調(diào)用該函數(shù)時在函數(shù)名后的圓括號內(nèi)的參數(shù)叫“實際參數(shù)”,簡稱“實參”。
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語言中,所謂的“輸入?yún)?shù)”就是指形參;當(dāng)形參使用引用傳遞時,輸入?yún)?shù)也可以當(dāng)作輸出參數(shù)。
GetNumber()沒有形參,也就沒有輸入?yún)?shù)。至于該函數(shù)體內(nèi)部的變量c及輸入語句,只能算是該函數(shù)的局部變量及賦值語句而已。簡單來說,函數(shù)有沒有輸入?yún)?shù),只要看函數(shù)名的圓括號內(nèi)是否有參數(shù)即可。
1.使用strlen函數(shù)來判斷輸入是否為空,如果返回值為0,就是空。
strlen做的是一個計數(shù)器的工作,它從內(nèi)存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內(nèi)存區(qū)域)開始掃描,直到碰到第一個字符串結(jié)束符'\0'為止,然后返回計數(shù)器值(長度不包含“\0”)。
原? 型:extern unsigned int strlen(char *s);
頭文件:string.h
格? 式:strlen (字符數(shù)組名)
功? 能:計算字符串s的(unsigned int型)長度,不包括'\0'在內(nèi)
說? 明:返回s的長度,不包括結(jié)束符NULL。
2.例程:
#include?stdio.h
#include?string.h
int?main(){
char?s[1000];
while?(gets(s)!=NULL){?//循環(huán)讀入s
if(0strlen(s))????//根據(jù)判斷輸出輸入是否為空
printf?("%s?不為空",s);
else
printf?("%s?為空",s);
}
return?0;
}
C語言輸入輸出函數(shù)有很多,bai標(biāo)準(zhǔn)I/O函數(shù)du中包含了如下幾個常用的函數(shù):
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int scanf(const char *format, arg_list)
scanf主要從標(biāo)準(zhǔn)zhi輸入流中獲取dao參數(shù)值,format為指定的參數(shù)格式及參數(shù)類型,如scanf("%s,%d",str,icount);
它要求在標(biāo)準(zhǔn)輸入流中輸入類似"son of bitch,1000"這樣的字符串,同時程序會將"son of bitch"給str,1000給icount.
scanf函數(shù)的返回值為int值,即成功賦值的個數(shù),在上例中如果函數(shù)調(diào)用成功,則會返回2,所以我們在寫程序時,可以通過
語句if(scanf("%s,%d",str,icount) != 2){...}來判斷用戶輸入是否正確.
int printf(const char *format, arg_list)
printf主要是將格式化字符串輸出到標(biāo)準(zhǔn)輸出流中,在stdio.h頭文件中定義了標(biāo)準(zhǔn)的輸入和輸出,分別是stdin,stdout.
arg_list可以是變量名,也可以是表達式,但最終都會以值的形式填充進format中.
int getc(FILE *fp)
getc主要是從文件中讀出一個字符.常用的判斷文件是否讀取結(jié)束的語句為:(ch = getc(fp)) != EOF.EOF為文件結(jié)束標(biāo)志,
定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin
時,getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.
int getchar(void)
getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時又
涉及到緩沖的問題,所以并不是在屏幕中敲上一個字符程序就會運行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符
串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個一個的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語句:
while ((c = getchar()) != '#')這是以#來結(jié)束的.
int putchar(int ch)
putchar(ch)主要是把字符ch寫到標(biāo)準(zhǔn)流stdout中去.
char * gets(char *str)
gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時退出,并會將換行符省去.
int puts(char *str)
puts主要是把字符串str寫到標(biāo)準(zhǔn)流stdout中去,并會在輸出到最后時添加一個換行符.
char *fgets(char *str, int num, FILE *fp)
str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)
不大于num-1.因為fgets函數(shù)會在末尾加上一個空字符以構(gòu)成一個字符串.另外fgets在讀取到換行符后不會將其省略.
int fputs(char *str, file *fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時并不添加換行符.
int fgetc(FILE *fp)
fgetc從fp的當(dāng)前位置讀取一個字符.
int fputc(int ch, file *fp)
fputc是將ch寫入fp當(dāng)前指定位置.
int fscanf(FILE *fp, char *format,...)
fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.
int fprintf(FILE *fp, char *format,...)
fprintf將格式化數(shù)據(jù)寫入流式文件中.
使用ctype.h里面isdigit()和isalpha函數(shù)就可以判斷了
#include ctype.h
#include stdio.h
int main()
{
printf("1 是數(shù)字嗎? %s\n",isdigit('1')?"是":"不是");
printf("a 是字母嗎?%s",isalpha('a')?"是":"不是");
return 0;
}
網(wǎng)站名稱:c語言判斷有無輸入函數(shù) c語言如何判斷有無輸入
轉(zhuǎn)載來源:http://m.kartarina.com/article10/hjgodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、App設(shè)計、全網(wǎng)營銷推廣、外貿(mào)建站、面包屑導(dǎo)航、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)