1)輸入單個(gè)字符:getc,getchar,getch(不會(huì)在屏幕顯示輸入字符)
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站設(shè)計(jì)、做網(wǎng)站,成都網(wǎng)站設(shè)計(jì),廣告投放,成都做網(wǎng)站選創(chuàng)新互聯(lián)公司,貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
2) 輸出單個(gè)字符:putc
3) 輸入一串字符(可以有空格,Tab 等): gets
4) 輸出一串字符(可以有空格,Tab 等): puts
5) 標(biāo)準(zhǔn)輸入:scanf(可以輸入數(shù)字,字符,字符串等。輸入以空白字符分割)
6) 標(biāo)準(zhǔn)輸出:printf(可以格式花輸出數(shù)字,字符,字符串等。)
文件輸入輸出:
在上面的輸入輸出函數(shù)(除了 getchar,getch)前面加上 f,比如fgetc,fputc,fscanf,fprintf,就是文件輸入輸出函數(shù)了。
2.putchar() getchar() 輸出輸入函數(shù)只針對(duì)單個(gè)字符的操作。3.puts(),gets() 輸出輸入函數(shù)可以單個(gè)字符操作(但是功能有限的),主要是針對(duì)字符串操作。 下面我們定義int a用scanf("%d",a)可以獲取整型a的值,a=getchar(),gets(a)無(wú)法從鍵盤(pán)獲取數(shù)字用printf("%d",a)可以打印數(shù)字a的值,putchar(a),puts(a)沒(méi)法打印數(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()敗補(bǔ)充:puts()和gets()能接收和打印單個(gè)字符只限制變量是數(shù)組變量例如 char a[50]; gets(a); put(a);你輸入一個(gè)字符就會(huì)打印一個(gè)字符但如果是字符變量 char a='x'; char a; puts(a); 或 gets(a); puts(a);就無(wú)法運(yùn)行char a[50]用scanf("%s",a)能獲取數(shù)組a的值,用a=getchar()無(wú)法獲取,用gets(a)能獲取a的值用printf("%s",a)能打印數(shù)組a的值 用putchar(a)無(wú)法打印,用puts(a)能打印a的值字符串(數(shù)組)方面:gets()和puts()第一,scanf()和printf()第2,getchar()和putchar()敗可見(jiàn)scanf()和printf()什么都能實(shí)現(xiàn),但對(duì)字符和字符串操作沒(méi)有其他兩種好getchar()和putchar()對(duì)字符操作優(yōu)勢(shì)明顯,但不能操作數(shù)字變量,字符數(shù)組變量gets()和puts()對(duì)字符串操作優(yōu)勢(shì)明顯,但也不能操作數(shù)字變量,字符變量scanf()和printf()格式輸入輸出能同時(shí)按格式一起輸入輸出字符,數(shù)字,字符串這是其他兩種不能比的所以程序以scanf()和printf()為主,其他兩種作為輔助,發(fā)揮各自的長(zhǎng)處。最后來(lái)個(gè)總結(jié),用程序表示#include stdio.hmain(){ char a,b[50]; printf("請(qǐng)輸入第一個(gè)字符:\n"); scanf(" %c",a); getchar(); //獲取前面的回車 printf("第一個(gè)的字符為:%c\n",a); printf("請(qǐng)輸入第二個(gè)字符:\n"); a=getchar(); printf("第二個(gè)字符為:"); putchar(a); putchar('\n'); printf("請(qǐng)輸入第一個(gè)字符串:\n"); scanf(" %s",b); getchar(); //獲取前面的回車 printf("第一個(gè)的字符為:%s\n",b); puts("請(qǐng)輸入第二個(gè)字符串:"); gets(b); puts("第二個(gè)字符串為:"); puts(b); }
向字符數(shù)組c中輸入字符串,它是這樣存儲(chǔ)的:
將字符串中的第一個(gè)字符賦給字符數(shù)組的第一個(gè)元素c[0],第二個(gè)字符賦給第二個(gè)元素c[1],以此類推。
需要注意的是,當(dāng)給c[9]賦過(guò)值之后,如果在字符串中還有剩余的字符,程序會(huì)繼續(xù)命令指針從c[9]處繼續(xù)向后移動(dòng)一個(gè)存儲(chǔ)單元的長(zhǎng)度(在這里就是一個(gè)字節(jié)的長(zhǎng)度),并在讀入一個(gè)字符并賦給緊挨著c[9]的那個(gè)存儲(chǔ)單元,形象一點(diǎn)兒,把它叫做c[10],以此類推,直到讀完所輸入的字符串中的所有字符,并自動(dòng)加賦'\0'。
這種輸入方式一般也能運(yùn)行,但是這是十分危險(xiǎn)的。因?yàn)榫o挨在c[9]后面的單元中的內(nèi)容是不可預(yù)料的,它可能是一個(gè)空白的存儲(chǔ)空間,也可能已經(jīng)存放了一個(gè)十分有用的數(shù)據(jù)。如果存儲(chǔ)的是一個(gè)有用的數(shù)據(jù),越界輸入就會(huì)把越界部分原先已有的數(shù)據(jù)覆蓋掉。
在程序比較小的時(shí)候,由于空白地帶比較多,程序往往可以正常運(yùn)行,但是當(dāng)程序的規(guī)模很大的時(shí)候,一旦越界輸入,(越界部分)有用數(shù)據(jù)被覆蓋掉的可能性就很大了。
最好的方法就是使用scanf("%10s", c); 以限制向字符數(shù)組中輸入字符的個(gè)數(shù)。