getc():
創(chuàng)新互聯(lián)建站主要從事成都網站設計、做網站、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務鳳山,十年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
調用方式:int getc(FILE *stream)
它返回指定輸入流stream的當前位置的下一個字符,并增加文件的位置指示器.
getch():
調用方式:int getch(void)
getch()從控制臺讀取一個字符,但不把該字符顯示在屏幕上,也就是不回顯.
getche():
調用方式:int getche(void)
getche()從控制臺讀取一個字符,把該字符顯示在屏幕上,也就是回顯.
getchar():
調有方式:int getchar(void)
getchar()從控制臺讀取一個字符,并回顯,它和getch(),getche()的不同在于,它等到輸入一個回車才結束,就算你輸入了一個字符串,它也只取其中的第一個字符.
getchar()頭文件為string.h,即需有# includestring.h
其他的頭文件為conio.h
呃,你可以使用追問嗎~我這太不方便了,請問你用的什么編譯器?
呃,這樣子啊,對gcc我不清楚了就,也許其不支持或者文件庫不一樣,你可以針對查查,
在vc中我試了沒有問題。。。
第一個要求:
#include
stdio.h
void
main()
{
char
a
;
scanf("%c",a)
;
/*
從鍵盤上輸入一個單個字符,并存入變量
a
中
*/
if(
(
a
=
'a'
)
(
a
=
'z'
)
)
/*
如果輸入的是
小寫字母
*/
{
a-=32
;
/*
把相應的小寫字母轉換為
大寫字母
,并輸出
*/
printf("%c",a)
;
}
else
/*
如果是其它所有字母的話,就直接輸出字母本身
*/
printf("%c\n",
a
)
;
}
第二個要求:
65(按
十進制
格式輸出)
101(按
八進制
格式輸出)
41(按
十六進制
格式輸出)
A(輸出ASCII
為
65
的字符本身,為大寫的
A)
一:格式輸出函數(shù)printf()
1、調用形式一般為:printf("格式化控制字符串",輸出表列);
2、格式化控制字符串用于指定輸出格式,它有三種形式:
1、格式說明符:規(guī)定了相應輸出表列內容的輸出格式,以%打頭,如%d、%o等
2、轉義字符:用來輸出轉義字符所代表的控制代碼或者特殊字符,比如常用的‘\n'、‘\t'
3、普通字符:需要原樣輸出的字符。
3、輸出表列為若干需要輸出的數(shù)據(jù)項,它與格式說明符在數(shù)量和類型上一一對應;
4、格式字符m指定輸出數(shù)據(jù)所占寬度,n對實數(shù)表示輸出n位小數(shù),對字符串表示截取的字符個數(shù),+表示右對齊,通常省略。
—表示左對齊,l用于長整型數(shù)據(jù),可加在d、o、x、u前,更多格式說明符及其組合形式如下所示:
格式字符
數(shù)據(jù)對象
輸出形式
數(shù)據(jù)輸出方法
%(+)-md
int
unsigned
int
short
unsigned
short
char
十進制整數(shù)
1、無m按實際位數(shù)輸出
2、有m輸出m位;超過m位,按實際位數(shù)輸出,不足補空格
3、有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
%(+)-mo
八進制整數(shù)
%(+)-mx
十六進制整數(shù)
%(+)-mu
無符號整數(shù)
%(+)-mld
long
unsigned
long
十進制整數(shù)
%(+)-mlo
八進制整數(shù)
%(+)-mlx
十六進制整數(shù)
%(+)-mlu
無符號整數(shù)
%(+)-m.nf
float
double
十進制小數(shù)
%(+)-m.ne
十進制指數(shù)
%(+)-g
自動選用%f和%e中較短的輸出寬度輸出單、雙精度浮點數(shù)
%(+)-mc
char
int
short
單個字符
1、無m輸出單個字符
2、有m輸出m位,補空格
3、有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
%(+)-m.ns
字符串
一串字符
1.無m、n按實際字符串輸出全部字符
2、有m、n僅輸出前n個字符,補空格
3.有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
二:格式輸入函數(shù)scanf()
1、
調用格式一般為:scanf("格式化控制字符串",地址表列);
2、格式化控制字符串和printf()函數(shù)含義相似,所不同的是它是對輸入格式進行控制;
3、地址表列是有若干等待輸入的數(shù)據(jù)所對應的內存單元地址組成,由逗號隔開,一般形式為a,a為變量;
4、地址表列在數(shù)量和類型上和格式化控制字符串中的格式說明符一一對應;
5、格式字符h表示輸入短型數(shù)據(jù),可用在d、o、x前面,m指定輸入數(shù)據(jù)所占寬度,
*表示對應的數(shù)據(jù)項讀入后不賦給相應的變量,更多格式說明符及其組合如下
格式字符
數(shù)據(jù)對象
輸入形式
數(shù)據(jù)輸入方法
%md
int
short
unsigned
int
unsigned
short
十進制整數(shù)
1、無m按實際位數(shù)輸入
2、有m輸入m位,不足m則跟回車鍵
%mo
八進制整數(shù)
%mx
十六進制整數(shù)
%mld
long
unsigned
long
十進制整數(shù)
%mlo
八進制整數(shù)
%mlx
十六進制整數(shù)
%mlf
float
double
十進制整數(shù)
%mle
%mc
char
單個字符
1、無m取單個字符
2、有m輸入m位,僅取第一個字符
%ms
字符串
一串字符
1、無m取回車或空格前若干字符
2、有m僅取前m字符
n = scanf("%d",n);
這一句有問題
1. scanf 函數(shù)是有返回值的,它的返回值可以分成三種情況
1) 正整數(shù),表示正確輸入參數(shù)的個數(shù)。
例如執(zhí)行 scanf(“%d %d”, a, b);
如果用戶輸入”3 4”,可以正確輸入,返回2(正確輸入了兩個變量);
如果用戶輸入”3,4”,可以正確輸入a,無法輸入b,返回1(正確輸入了一個變量)。
2) 0,表示用戶的輸入不匹配,無法正確輸入任何值。如上例,用戶如果輸入”,3 4”,返回0。
3) EOF,這是在 stdio.h 里面定義的常量(通常值為-1),表示輸入流已經結束。在Windows下,用戶按下CTRL+Z(會看到一個^Z字符)再按下回車(可能需要重復2次),就表示輸入結束;Linux/Unix下使用CTRL+D表示輸入結束。
你這個輸入一個返回值就是1,因此n也會一直等于一
2.putchar() getchar() 輸出輸入函數(shù)只針對單個字符的操作。3.puts(),gets() 輸出輸入函數(shù)可以單個字符操作(但是功能有限的),主要是針對字符串操作。 下面我們定義int a用scanf("%d",a)可以獲取整型a的值,a=getchar(),gets(a)無法從鍵盤獲取數(shù)字用printf("%d",a)可以打印數(shù)字a的值,putchar(a),puts(a)沒法打印數(shù)字方面:printf()和scanf()勝char a用scanf("%c",a) 可以獲取字符a的值,用a=getchar()能獲取a的值,用gets(a)不能獲取用printf("%c",a)可以打印字符a的值 用a=getchar()可以打印a的值,用puts(a)不能打印字符方面:getchar()和putchar()第1 scanf()和printf()第2 gets和puts()敗補充:puts()和gets()能接收和打印單個字符只限制變量是數(shù)組變量例如 char a[50]; gets(a); put(a);你輸入一個字符就會打印一個字符但如果是字符變量 char a='x'; char a; puts(a); 或 gets(a); puts(a);就無法運行char a[50]用scanf("%s",a)能獲取數(shù)組a的值,用a=getchar()無法獲取,用gets(a)能獲取a的值用printf("%s",a)能打印數(shù)組a的值 用putchar(a)無法打印,用puts(a)能打印a的值字符串(數(shù)組)方面:gets()和puts()第一,scanf()和printf()第2,getchar()和putchar()敗可見scanf()和printf()什么都能實現(xiàn),但對字符和字符串操作沒有其他兩種好getchar()和putchar()對字符操作優(yōu)勢明顯,但不能操作數(shù)字變量,字符數(shù)組變量gets()和puts()對字符串操作優(yōu)勢明顯,但也不能操作數(shù)字變量,字符變量scanf()和printf()格式輸入輸出能同時按格式一起輸入輸出字符,數(shù)字,字符串這是其他兩種不能比的所以程序以scanf()和printf()為主,其他兩種作為輔助,發(fā)揮各自的長處。最后來個總結,用程序表示#include stdio.hmain(){ char a,b[50]; printf("請輸入第一個字符:\n"); scanf(" %c",a); getchar(); //獲取前面的回車 printf("第一個的字符為:%c\n",a); printf("請輸入第二個字符:\n"); a=getchar(); printf("第二個字符為:"); putchar(a); putchar('\n'); printf("請輸入第一個字符串:\n"); scanf(" %s",b); getchar(); //獲取前面的回車 printf("第一個的字符為:%s\n",b); puts("請輸入第二個字符串:"); gets(b); puts("第二個字符串為:"); puts(b); }