IO筆記

課程概覽

===============

? ? 1.學(xué)習(xí)方法:學(xué)接口函數(shù)(返回值,功能蔑祟,形參)

? ? 2.系統(tǒng)IO相關(guān)的函數(shù)

? ? ? 標(biāo)準(zhǔn)IO相關(guān)的函數(shù)

? ? ? 目錄操作相關(guān)的函數(shù)

系統(tǒng)IO函數(shù)

==============

? ? IO:input? output文件的輸入和輸出

? ? ? ? ? 嵌入式中有大量的硬件設(shè)備(液晶屏实檀,觸摸屏婚夫,鍵盤)

? ? ? ? ? linux中一切都是文件: /dev

? ? ? ? ? open()? read()? write? close? lseek? stat? ? dup? dup2

? ? (1)文件的打開或者新建

? ? ? #include <sys/types.h>

? ? ? #include <sys/stat.h>

? ? ? #include <fcntl.h>

? ? ? ? ? int open(const char *pathname, int flags);

? ? ? ? ? ? ? ? 返回值:成功返回文件描述符或者翻譯成文件的句柄(重點(diǎn),替身)

? ? ? ? ? ? ? ? ? ? ? ? 專業(yè)理解:文件描述符就是數(shù)組的下標(biāo)(系統(tǒng)中定義一個(gè)專門存放打開文件屬性信息的結(jié)構(gòu)體數(shù)組)

? ? ? ? ? ? ? ? ? ? ? ? 非專業(yè)理解:文件描述符就是替身

? ? ? ? ? ? ? ? ? ? ? ? 失敗? -1

? ? ? ? ? ? ? ? ? 參數(shù):pathname --》你要打開激才、新建的文件的路徑名

? ? ? ? ? ? ? ? ? ? ? ? flags --》O_RDONLY,? O_WRONLY,? or? O_RDWR.? 宏定義

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用什么權(quán)限打開文件

? ? ? ? ? ? ? int fd=open("/home/gec/1.txt",O_RDWR);

? ? ? ? ? int open(const char *pathname, int flags, mode_t mode); //新建文件的同時(shí)可以設(shè)置文件的權(quán)限

? ? ? ? ? ? ? ? ? 參數(shù):mode --》設(shè)置權(quán)限的鳍贾,用八進(jìn)制的數(shù)字表示權(quán)限

? ? ? ? ? ? ? ? ? ? ? ? flags --》O_CREAT 新建文件

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? O_EXCL? 配合O_CREAT一起使用梦抢,表示如果新建的文件已經(jīng)存在就返回-1并退出

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? O_TRUNC 配合O_CREAT一起使用般贼,表示如果新建的文件已經(jīng)存在就清空覆蓋掉原來的文件

? ? ? ? ? ? ? ? ? ? ? ? open("/home/gec/new.txt",O_CREAT,0777);


? ? ? ? ? 總結(jié):linux中只要函數(shù)參數(shù)有多個(gè)宏定義讓你選擇

? ? ? ? ? ? ? ? 你如果要使用多個(gè)宏,都是用按位或連接起來


系統(tǒng)IO

=================

? ? ? ? 在共享里面用chmod修改權(quán)限是不準(zhǔn)確的(windows跟linux公用的環(huán)境奥吩,修改權(quán)限哼蛆,創(chuàng)建軟鏈接都會(huì)有問題)

? ? ? ? rwxrwxrwx 1 root root? 33 Jan 13 22:08 1.txt

? ? ? ? touch命令:

? ? ? ? ? ? ? 新建文件,但是無法打開文件? ? ? ? ? ? ?

? ? ? ? /usr/src/linux-headers-3.5.0-23-generic/include/linux/sched.h的第1394行定義結(jié)構(gòu)體指針霞赫,專門用來指向打開成功的文件信息(結(jié)構(gòu)體數(shù)組)

? ? ? (2)讀取文件內(nèi)容

? ? ? ? ? ? ? ? fd=open("1.txt")? 文件描述符和文件名本身之間一一對(duì)應(yīng)的映射關(guān)系

? ? ? ? ? ? ? ? typedef 給常見的類型換了新名字腮介,例如mode_t? size_t? ssize_t? off_t

? ? ? ? ? ? ? ? #include <unistd.h>

? ? ? ? ? ? ? ? ssize_t read(int fd, void *buf, size_t count);

? ? ? ? ? ? ? ? ? ? ? 返回值:成功讀取的字節(jié)數(shù)? 失敗? -1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件讀取完畢返回0

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fd --》文件或者硬件設(shè)備的文件描述符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? buf --》可以接收任意類型指針作為實(shí)參,存放你讀取到的文件內(nèi)容

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? count --》你打算讀取多少字節(jié)的數(shù)據(jù)

? ? ? (3)寫入文件

? ? ? ? ? ? ? ? #include <unistd.h>

? ? ? ? ? ? ? ? ssize_t write(int fd, const void *buf, size_t count);

? ? ? ? ? ? ? ? ? ? ? 返回值:count寫多少端衰,返回值就是多少? 失敗? -1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注意問題:count不要隨便亂寫

? ? ? (4)文件的關(guān)閉

? ? ? ? ? ? ? int close(int fd);

? ? ? (5)設(shè)置文件讀寫偏移(設(shè)置光標(biāo)位置)

? ? ? ? ? ? ? off_t lseek(int fildes, off_t offset, int whence);

? ? ? ? ? ? ? ? ? ? ? 返回值:當(dāng)前光標(biāo)距離文件開頭的字節(jié)數(shù)? ? 失敗? -1

? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):fildes --》你要設(shè)置偏移的文件的文件描述符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? offset --》你打算偏移多少字節(jié)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? whence --》SEEK_SET -->起始位置

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SEEK_CUR -->當(dāng)前位置

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SEEK_END -->文件末尾

? ? ? ? ? ? ? ? ? ? ? ? 例如:lseek(fd,0,SEEK_END); 返回值就是文件的大小叠洗,記得求出大小以后,重新將光標(biāo)移動(dòng)回起始位置

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lseek(fd,-5,SEEK_END);? ? ? ? ?

練習(xí):

? ? 1.拷貝文件 -->通過主函數(shù)傳參拷貝一個(gè)文件

? ? ? ? ? ./main? 1.txt? 2.txt?

? ? ? ? ? ? ? 1.txt本來就有(字節(jié)數(shù)要求多一點(diǎn)旅东,例如拷貝我們的某一天的筆記)

? ? ? ? ? ? ? 2.txt沒有

? ? 2.open("1.txt") ,打印文件描述符

? ? ? open("2.txt") ,打印文件描述符

? ? ? 關(guān)閉1.txt

? ? ? open("3.txt") ,打印文件描述符

? ? 3. lseek(fd,-5,SEEK_SET);

? ? ? lseek(fd,-5,SEEK_CUR);

? ? 4. 要求將文件最后面十個(gè)字節(jié)的內(nèi)容惕味,以及倒數(shù)第50到60這十個(gè)字節(jié)的數(shù)據(jù)拷貝到另外一個(gè)文件中

? ? ? ? ? ? ./main? 1.txt

? ? 5. 在開發(fā)板上顯示bmp格式的圖片

? ? ? ? bmp格式圖片特點(diǎn):

? ? ? ? ? ? ? ? 1.每個(gè)像素點(diǎn)占3個(gè)字節(jié)

? ? ? ? ? ? ? ? 2.bmp格式是微軟公司發(fā)明的,存儲(chǔ)的時(shí)候顏色值顛倒BGR

? ? ? ? ? ? ? ? 3.存儲(chǔ)的時(shí)候上下也是顛倒的

? ? ? ? 機(jī)器視覺 -->圖像處理 opencv? openGL


系統(tǒng)IO

=================

? ? ? vim新建文件玉锌,會(huì)有隱藏字符,你可以在/etc/vim/vimrc配置文件中名挥,加上set list這句話,顯示隱藏的字符

? ? ? (6)獲取文件屬性信息(比如:文件的權(quán)限主守,文件的大匈骶蟆)

? ? ? #include <sys/types.h>

? ? ? #include <sys/stat.h>

? ? ? #include <unistd.h>

? ? ? int stat(const char *path, struct stat *buf);? //不能夠判斷軟鏈接

? ? ? int lstat(const char *path, struct stat *buf);? //能夠判斷軟鏈接

? ? ? ? ? ? ? ? ? 返回值:成功? 0? ? 失敗? -1

? ? ? ? ? ? ? ? ? ? 參數(shù):path --》文件的路徑名

? ? ? ? ? ? ? ? ? ? ? ? ? buf --》存放你獲取到的文件的屬性信息

? ? ? ? ? struct stat {

? ? ? ? ? ? ? dev_t? ? st_dev;? ? /* ID of device containing file */

? ? ? ? ? ? ? ino_t? ? st_ino;? ? /* inode number */? linux將目錄中所有的內(nèi)容用類似鏈表的存儲(chǔ)結(jié)構(gòu)榄融,每個(gè)節(jié)點(diǎn)都有一個(gè)編號(hào)

? ? ? ? ? ? ? mode_t? ? st_mode;? ? /* protection */? 存放文件的權(quán)限信息,文件類型信息(重點(diǎn))

? ? ? ? ? ? ? nlink_t? st_nlink;? /* number of hard links */

? ? ? ? ? ? ? uid_t? ? st_uid;? ? /* user ID of owner */

? ? ? ? ? ? ? gid_t? ? st_gid;? ? /* group ID of owner */

? ? ? ? ? ? ? dev_t? ? st_rdev;? ? /* device ID (if special file) */? 字符設(shè)備或者塊設(shè)備

? ? ? ? ? ? ? off_t? ? st_size;? ? /* total size, in bytes */? 文件大小

? ? ? ? ? ? ? blksize_t st_blksize; /* blocksize for file system I/O */

? ? ? ? ? ? ? blkcnt_t? st_blocks;? /* number of 512B blocks allocated */

? ? ? ? ? ? ? time_t? ? st_atime;? /* time of last access */? ? 最后訪問時(shí)間

? ? ? ? ? ? ? time_t? ? st_mtime;? /* time of last modification */? 修改時(shí)間

? ? ? ? ? ? ? time_t? ? st_ctime;? /* time of last status change */ 狀態(tài)改變時(shí)間

? ? ? ? ? };

? ? ? ? ? S_IRWXU? ? 00700? ? mask for file owner permissions

? ? ? ? ? S_IRUSR? ? 00400? ? owner has read permission

? ? ? ? ? S_IWUSR? ? 00200? ? owner has write permission

? ? ? ? ? S_IXUSR? ? 00100? ? owner has execute permission

? ? ? ? ? S_IRWXG? ? 00070? ? mask for group permissions

? ? ? ? ? S_IRGRP? ? 00040? ? group has read permission

? ? ? ? ? S_IWGRP? ? 00020? ? group has write permission

? ? ? ? ? S_IXGRP? ? 00010? ? group has execute permission

? ? ? ? ? S_IRWXO? ? 00007? ? mask for permissions for others (not in group)

? ? ? ? ? S_IROTH? ? 00004? ? others have read permission

? ? ? ? ? S_IWOTH? ? 00002? ? others have write permission

? ? ? ? ? S_IXOTH? ? 00001? ? others have execute permission

? ? ? ? ? S_ISREG(m)? is it a regular file?

? ? ? ? ? S_ISDIR(m)? directory?

? ? ? ? ? S_ISCHR(m)? character device?

? ? ? ? ? S_ISBLK(m)? block device?

? ? ? ? ? S_ISFIFO(m) FIFO (named pipe)?

? ? ? ? ? S_ISLNK(m)? symbolic link? (Not in POSIX.1-1996.)

? ? ? ? ? S_ISSOCK(m) socket? (Not in POSIX.1-1996.)

? ? ? (7)文件重定向

? ? ? ? ? ? 標(biāo)準(zhǔn)輸出:lcd? printf打印的內(nèi)容

? ? ? ? ? ? 標(biāo)準(zhǔn)錯(cuò)誤輸出:lcd? perror打印

? ? ? ? ? ? int dup(int fildes); //給舊的文件描述符,分配新的文件描述符

? ? ? ? ? ? ? ? ? 返回值:新的文件描述符? 失敗? -1

? ? ? ? ? ? ? ? ? ? 參數(shù):fildes --》原本舊的的文件描述符

? ? ? ? ? ? int dup2(int fildes, int fildes2);


? ? ? (8)錯(cuò)誤碼

? ? ? ? ? ? 原理:linux中定義一個(gè)全局變量errno,保存了linux系統(tǒng)中所有常見的錯(cuò)誤類型

? ? ? ? ? ? ? ? ? linux頭文件中將所有的出錯(cuò)定義成了宏救湖,errno保存某個(gè)出錯(cuò)的宏定義

? ? ? ? ? ? ? ? /usr/include/asm-generic/errno.h定義了一部分錯(cuò)誤的宏

? ? ? ? ? ? #include <stdio.h>

? ? ? ? ? ? #include <errno.h>

? ? ? ? ? ? ? void perror(const char *s); //將錯(cuò)誤的原因也打印出來

? ? ? ? ? ? ? ? ? ? ? 參數(shù):s --》打印信息


? ? ? (9)修改權(quán)限

? ? ? ? ? ? int chmod(const char *path, mode_t mode);

練習(xí):

? ? ? 主函數(shù)傳參傳遞路徑

? ? ? ? ? ? 檢查參數(shù)個(gè)數(shù) --》不符合要求退出愧杯,讓用戶傳參

? ? ? ? ? ? 檢查文件類型 --》普通文件,要求獲取文件大小鞋既,并判斷文件的權(quán)限是不是當(dāng)前用戶可讀可寫

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果權(quán)限不符合要求使用chmod()函數(shù)修改權(quán)限為可讀可寫,然后拷貝

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 目錄力九,退出程序,提示用戶邑闺,文件類型不符合要求

標(biāo)準(zhǔn)IO

=================

? ? ? 標(biāo)準(zhǔn)IO和系統(tǒng)IO

? ? ? ? ? ? 主要區(qū)別:系統(tǒng)IO open? read? write? close? 不帶讀寫緩沖

? ? ? ? ? ? ? ? ? ? ? 標(biāo)準(zhǔn)IO fopen? fread? fwrite? fclose? 帶緩沖

? ? ? (1)打開文件

? ? ? ? ? ? FILE *fopen(const char *path, const char *mode);

? ? ? ? ? ? ? ? ? 返回值:成功返回FILE類型的指針用來存放文件的信息

? ? ? ? ? ? ? ? ? ? ? ? ? 失敗? NULL

? ? ? ? ? ? ? ? ? ? 參數(shù):mode --》r? 只讀的方式打開

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? r+? 可讀可寫的方式打開

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w? 如果文件不存在跌前,可以新建

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果文件存在,清空? 可寫的方式打開

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w+? 如果文件不存在陡舅,可以新建

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果文件存在抵乓,清空? 可讀可寫的方式打開

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a? 追加的方式打開文件,不存在靶衍,新建

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a+? 追加的方式打開文件灾炭,不存在,新建

? ? ? (2)文件的讀寫

? ? ? ? ? ? ssize_t read(int fd, void *buf, size_t count);

? ? ? ? ? ? ? ? ? read(fd,buf,100);

? ? ? ? ? ? ? ? ? fread(buf,10,10,myfile);

? ? ? ? ? ? ? ? ? fread(buf,25,4,myfile);

? ? ? ? ? ? ? ? ? fread(buf,100,1,myfile);

? ? ? ? ? ? size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

? ? ? ? ? ? ? ? ? ? ? 以數(shù)據(jù)塊為單位讀

? ? ? ? ? ? ? ? ? ? ? 返回值:重點(diǎn) 成功讀取到的完整的數(shù)據(jù)塊的個(gè)數(shù)?

? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):size --》每個(gè)數(shù)據(jù)塊的大小? 字節(jié)?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nmemb --》你打算讀取多少個(gè)數(shù)據(jù)塊

? ? ? ? ? ? size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

? ? ? ? ? ? ? ? ? ? ? 返回值:重點(diǎn) 在沒有超出緩沖區(qū)大小的情況下 nmemb寫多少颅眶,返回值就是多少

標(biāo)準(zhǔn)IO

================

? ? ? 硬件的驅(qū)動(dòng):用系統(tǒng)IO操作

? ? ? 讀寫一個(gè)普通文件:建議你用標(biāo)準(zhǔn)IO蜈出,帶緩沖速度快

? ? ? (4)關(guān)閉

? ? ? ? ? ? int fclose(FILE *fp);

? ? ? (5)字符串的拼接和拆分

? ? ? ? ? ? sprintf() //字符串的拼接,可以將任意類型的數(shù)據(jù)拼接成字符串(*****重點(diǎn))

? ? ? ? ? ? ? ? int sprintf(char *str, const char *format, ...); //可變參數(shù)函數(shù)

? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):str --》存放拼接得到的字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? format --》你想按照什么格式去拼接字符串

? ? ? ? ? ? ? ? ? ? ? ? ? 注意:str大小一定要足夠存放結(jié)果

? ? ? ? ? ? sscanf() //字符串拆分

? ? ? ? ? ? ? ? int sscanf(const char *str, const char *format, ...);

? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):str --》你要拆分的字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? format --》你打算按照什么格式拆分

? ? ? (6)刷新緩沖區(qū),區(qū)分系統(tǒng)IO(不帶緩沖區(qū))和標(biāo)準(zhǔn)IO(f開頭的那些函數(shù)涛酗,帶緩沖區(qū))

? ? ? ? ? ? int fflush(FILE *stream);


? ? ? (7)求緩沖區(qū)大小

? ? ? ? ? ? 系統(tǒng)中/usr/include/stdio.h? 第49行類型重定義了FILE

? ? ? ? ? ? ? ? ? /usr/include/libio.h? 第273行就有結(jié)構(gòu)體的完整定義

? ? ? ? ? ? linux中將緩沖分為三種:不帶緩沖铡原,全緩沖,行緩沖

? ? ? ? ? ? ? ? ? 全緩沖:等待緩沖去填滿煤杀,才進(jìn)行IO操作眷蜈,普通文件

? ? ? ? ? ? ? ? ? ? A 當(dāng)緩沖區(qū)被填滿時(shí)沪哺,立即刷新

? ? ? ? ? ? ? ? ? ? B 當(dāng)調(diào)用fflush( )時(shí)沈自,立即刷新

? ? ? ? ? ? ? ? ? ? C 當(dāng)調(diào)用setbuf( )/setvbuf( )時(shí),立即刷新

? ? ? ? ? ? ? ? ? ? D 當(dāng)進(jìn)程正常關(guān)閉時(shí)辜妓,立即刷新(暫時(shí)不管)

? ? ? ? ? ? ? ? ? ? ? D.1 在main函數(shù)中return

? ? ? ? ? ? ? ? ? ? ? D.2 調(diào)用exit( )/_exit( )/_Exit( )

? ? ? ? ? ? ? ? ? ? ? D.3 在最后一條線程中調(diào)用pthread_exit( )

? ? ? ? ? ? ? ? ? ? E 當(dāng)調(diào)用fclose( )時(shí)枯途,立即刷新

? ? ? ? ? ? ? ? ? 行緩沖:等待一行結(jié)束 \n,進(jìn)行IO操作籍滴,或者行緩沖區(qū)滿了酪夷,刷新,標(biāo)準(zhǔn)輸出(屏幕)孽惰,標(biāo)準(zhǔn)IO

? ? ? ? ? ? ? ? ? ? A 當(dāng)緩沖區(qū)被填滿時(shí)晚岭,立即刷新

? ? ? ? ? ? ? ? ? ? B 當(dāng)調(diào)用fflush( )時(shí),立即刷新

? ? ? ? ? ? ? ? ? ? C 當(dāng)調(diào)用setbuf( )/setvbuf( )時(shí)勋功,立即刷新

? ? ? ? ? ? ? ? ? ? D 當(dāng)進(jìn)程正常關(guān)閉時(shí)坦报,立即刷新

? ? ? ? ? ? ? ? ? ? ? D.1 在main函數(shù)中return

? ? ? ? ? ? ? ? ? ? ? D.2 調(diào)用exit( )/_exit( )/_Exit( )

? ? ? ? ? ? ? ? ? ? ? D.3 在最后一條線程中調(diào)用pthread_exit( )

? ? ? ? ? ? ? ? ? ? E 當(dāng)調(diào)用fclose( )時(shí)库说,立即刷新

? ? ? ? ? ? ? ? ? ? F 當(dāng)遇到'\n'時(shí),立即刷新

? ? ? ? ? (8)設(shè)置文件讀寫的偏移

? ? ? ? ? ? ? int fseek(FILE *stream, long offset, int whence);

? ? ? ? ? ? ? long ftell(FILE *stream); //返回文件當(dāng)前位置距離文件開頭的字節(jié)數(shù)

? ? ? ? ? ? ? void rewind(FILE *stream); //等價(jià)于fseek(filep,0,SEEK_SET);

? ? ? ? ? ? ? ? ? ? C語言:long整型 long m=12;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? long m=12L;


? ? ? ? ? (9)fgets()? fputs()? gets()? puts()? getchar()? putchar() getc()? putc()

? ? ? ? ? ? ? ? 第一組:fgets()? fputs()

? ? ? ? ? ? ? ? ? ? 總結(jié):fgets(buf,size,filep);

? ? ? ? ? ? ? ? ? ? ? ? ? ? size沒有超出文件一行的大小片择,buf中最后面填充'\0'

? ? ? ? ? ? ? ? ? ? ? ? ? ? size超過了文件一行的大小潜的,buf中最后面將回車(windows上\r\n)以及'\0'補(bǔ)充在后面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (linux上\n)

? ? ? ? ? ? ? ? ? ? char *fgets(char *s, int size, FILE *stream);? //讀取一行數(shù)據(jù)? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回值:讀取到字符串的首地址? 失敗? NULL

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):s --》存放讀取到的字符串

? ? ? ? ? ? ? ? ? ? int fputs(const char *s, FILE *stream); //寫入一行數(shù)據(jù)

? ? ? ? ? ? ? 第二組:gets()? puts()

? ? ? ? ? ? ? ? ? ? char *gets(char *s); //只能從鍵盤讀取字符串

? ? ? ? ? ? ? ? ? ? int puts(const char *s); //只能寫入到標(biāo)準(zhǔn)輸出(液晶屏)

? ? ? ? ? ? ? 第三組:getchar()? putchar()

? ? ? ? ? ? ? ? ? ? int getchar(void);

? ? ? ? ? ? ? ? ? ? int putchar(int c); //只能是寫入一個(gè)字符到lcd

? ? ? ? ? ? ? ? ? ? ? ? ? 返回值:對(duì)應(yīng)字符的ASCII值

? ? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):c --》你要寫入的字符的ASCII值

? ? ? ? ? ? ? 第四組:getc()? putc()

? ? ? ? ? ? ? ? ? ? int getc(FILE *stream);

? ? ? ? ? ? ? ? ? ? ? ? getc(stdin); 從鍵盤讀取一個(gè)字符,返回字符的ASCII碼值

? ? ? ? ? ? ? ? ? ? ? ? getc(filep); 從filep代表的文件中讀取一個(gè)字符

? ? ? ? ? ? ? ? ? ? int putc(int c, FILE *stream);

? ? ? ? ? ? ? ? ? ? ? ? putc('y',stdout); //將y打印在屏幕上

? ? ? ? ? ? ? ? ? ? ? ? putc('y',filep); //將字符y寫入到filep代表的文件中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市字管,隨后出現(xiàn)的幾起案子啰挪,更是在濱河造成了極大的恐慌,老刑警劉巖嘲叔,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡呵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡借跪,警方通過查閱死者的電腦和手機(jī)政己,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掏愁,“玉大人歇由,你說我怎么就攤上這事」郏” “怎么了沦泌?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辛掠。 經(jīng)常有香客問我谢谦,道長(zhǎng),這世上最難降的妖魔是什么萝衩? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任回挽,我火速辦了婚禮,結(jié)果婚禮上猩谊,老公的妹妹穿的比我還像新娘千劈。我一直安慰自己,他們只是感情好牌捷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布墙牌。 她就那樣靜靜地躺著,像睡著了一般暗甥。 火紅的嫁衣襯著肌膚如雪喜滨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天撤防,我揣著相機(jī)與錄音虽风,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辜膝,可吹牛的內(nèi)容都是我干的陌凳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼内舟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼合敦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起验游,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤充岛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后耕蝉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崔梗,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年垒在,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒜魄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡场躯,死狀恐怖谈为,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踢关,我是刑警寧澤伞鲫,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站签舞,受9級(jí)特大地震影響秕脓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儒搭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一吠架、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搂鲫,春花似錦傍药、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褪秀。三九已至蓄诽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媒吗,已是汗流浹背仑氛。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锯岖。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓介袜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親出吹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遇伞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 親子日記174篇。 “知識(shí)”想要明白它所有的意義捶牢,那就要每天學(xué)習(xí)才能跟上步伐鸠珠,不然用到時(shí)就是一個(gè)果“苦...
    荊佳琪媽媽閱讀 148評(píng)論 0 1
  • 情結(jié) &“光環(huán)” “名校情結(jié)”么? 嗯秋麸,我還是有一些的渐排。 正因?yàn)橹雷约旱谋孔荆圆趴偸呛芎闷婺切┞斆鞯膶W(xué)霸們都...
    小萌MoeL閱讀 318評(píng)論 0 0
  • 雨過天晴灸蟆,草地上的露珠驯耻。
    caoxia閱讀 308評(píng)論 3 1
  • 世間安得雙全法 圖片來自微博
    威威威威本本閱讀 160評(píng)論 0 2