区分多种类型的输入输出
生活随笔
收集整理的這篇文章主要介紹了
区分多种类型的输入输出
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
區(qū)分多種類型的輸入輸出
文章目錄
- 區(qū)分多種類型的輸入輸出
- **1.printf函數(shù)**
- **2.sprintf函數(shù)**
- **3.fprintf函數(shù)**
- **4.snprintf函數(shù)**
- **5.write函數(shù)**
- **6.read函數(shù)**
- **7.fread函數(shù)**
- **8.fwrite函數(shù)**
1.printf函數(shù)
這個(gè)就不說(shuō)了
2.sprintf函數(shù)
int sprintf(char *str, const char *format, ...);- 作用:是把格式化字符串輸出到指定字符串,所以參數(shù)比printf多了個(gè)char * ,那就是目標(biāo)字符串的地址
- 頭文件:stdio.h
- 函數(shù)功能:格式化字符串,將格式化的數(shù)據(jù)寫入字符串中
- 參數(shù):(1)str:是char類型的指針,指向?qū)懭氲淖址羔?#xff1b;
- 參數(shù):(2)format:格式化字符串,即在程序中想要的格式;
- 參數(shù):(3)argument:可選參數(shù),可以為任意類型的數(shù)據(jù)
- 函數(shù)返回值:buffer指向的字符串的長(zhǎng)度;
3.fprintf函數(shù)
int fprintf(FILE *stream, const char *format, ...);- 是把格式化字符串輸出到指定文件中,所以參數(shù)比printf多了個(gè)文件指針File * ,那是目標(biāo)文件的文件描述符(文件流指針)
- stream-- 這是指向 FILE 對(duì)象的指針,該 FILE 對(duì)象標(biāo)識(shí)了流
- format-- 這是 C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標(biāo)簽,format 標(biāo)簽可被隨后的附加參數(shù)中指定的值替換,并按需求進(jìn)行格式化。
- format 標(biāo)簽屬性是%[flags][width][.precision][length]specifier
[argument]:附加參數(shù)列表 - fprintf( )會(huì)根據(jù)參數(shù)format 字符串來(lái)轉(zhuǎn)換并格式化數(shù)據(jù),然后將結(jié)果輸出到參數(shù)stream
指定的文件中,直到出現(xiàn)字符串結(jié)束(’\0’)為止
4.snprintf函數(shù)
int snprintf(char *str, size_t size, const char *format, ...);- 將可變個(gè)參數(shù)(…)按照f(shuō)ormat格式化成字符串,然后將其復(fù)制到str中
- 如果格式化后的字符串長(zhǎng)度 < size,則將此字符串全部復(fù)制到str中,并給其后添加一個(gè)字符串結(jié)束符(’\0’);
- 如果格式化后的字符串長(zhǎng)度 >= size,則只將其中的(size-1)個(gè)字符復(fù)制到str中,并給其后添加一個(gè)字符串結(jié)束符(’\0’),返回值為欲寫入的字符串長(zhǎng)度
- 函數(shù)返回值
若成功則返回預(yù)寫入的字符串長(zhǎng)度,若出錯(cuò)則返回負(fù)值。
與snprintf的返回值不同,sprintf的返回值是成功寫入的字符串長(zhǎng)度,此處需要謹(jǐn)慎處理。
5.write函數(shù)
- 函數(shù)定義:
- 函數(shù)說(shuō)明:write()會(huì)把參數(shù)buf所指的內(nèi)存寫入count個(gè)字節(jié)到參數(shù)放到所指的文件內(nèi)。
- 返回值:如果順利write()會(huì)返回實(shí)際寫入的字節(jié)數(shù)。當(dāng)有錯(cuò)誤發(fā)生時(shí)則返回-1,錯(cuò)誤代碼存入errno中。
6.read函數(shù)
ssize_t read(int fd, void * buf, size_t count);- 函數(shù)說(shuō)明:read()會(huì)把參數(shù)fd所指的文件傳送count 個(gè)字節(jié)到buf 指針?biāo)傅膬?nèi)存中。
- 返回值:返回值為實(shí)際讀取到的字節(jié)數(shù), 如果返回0, 表示已到達(dá)文件尾或是無(wú)可讀取的數(shù)據(jù)。若參數(shù)count 為0, 則read()不會(huì)有作用并返回0。
7.fread函數(shù)
size_t fread(void*buffer,size_t size,size_t count,FILE*stream);-
buffer: 是讀取的數(shù)據(jù)存放的內(nèi)存的指針,
(可以是數(shù)組,也可以是新開辟的空間)
ps: 是一個(gè)指向用于保存數(shù)據(jù)的內(nèi)存位置的指針(為指向緩沖區(qū)
保存或讀取的數(shù)據(jù)或者是用于接收數(shù)據(jù)的內(nèi)存地址) -
size: 是每次讀取的字節(jié)數(shù)
-
count: 是讀取的次數(shù)
-
stream: 是要讀取的文件的指針
ps: 是數(shù)據(jù)讀取的流(輸入流) -
返回值
成功:是實(shí)際讀取的元素(并非字節(jié))數(shù)目
失敗:返回0
ps:如果輸入過(guò)程中遇到了文件尾或者輸出過(guò)程中出現(xiàn)了錯(cuò)誤,這個(gè)數(shù)字可能比請(qǐng)求的元素?cái)?shù)目要小
8.fwrite函數(shù)
size_t fwrite(void*buffer,size_ size,size_t count,FILE*stream)- buffer:是一個(gè)指向用于保存數(shù)據(jù)的內(nèi)存位置的指針
(是一個(gè)指針,對(duì)于fwrite來(lái)說(shuō),是要獲取數(shù)據(jù)的地址) - size: 是每次讀取的字節(jié)數(shù)
- count: 是讀取的次數(shù)
- stream: 是數(shù)據(jù)寫入的流(目標(biāo)指針的文件)
- 返回值:
是實(shí)際寫入的元素(并非字節(jié))數(shù)目
ps:如果輸入過(guò)程中遇到了文件尾或者輸出過(guò)程中出現(xiàn)了失誤,這個(gè)數(shù)字可能比請(qǐng)求的元素?cái)?shù)目要小
總結(jié)
以上是生活随笔為你收集整理的区分多种类型的输入输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。