當前位置:首頁 » 編程語言 » c語言文件的輸入

c語言文件的輸入

發布時間: 2023-09-23 08:52:32

『壹』 c語言中文件輸入/輸出是如何實現的

#include<stdio。h>

intmain()

{

intmax,min,宏襲咐score;

doubleavg=0;

scanf("%d",&score);

max=min=score;

avg+=score;

for(inti=0;i<29;i++)

{

scanf("%d",&score);

if(score>max)max=score;蔽純

if(score<min)min=score;

avg+=score;

}

avg=avg/30;

printf("最高分max=%d,最低分min=%d,平均分avg=%lf ",max,min,avg);

return0;

}

文件輸入/輸出

在C語言中,輸入和輸出是經由標准庫中的一組函數來實現的。在ANSI C中,這些函數被禪前定義在頭文件;中。

標准輸入/輸出

有三個標准輸入/輸出是標准I/O庫預先定義的:

stdin標准輸入

stdout標准輸出

stderr輸入輸出錯誤

以上內容參考:網路-c語言

『貳』 C語言如何以文件作為標准輸入

可使用freopen函數,格式如下:
FILE*
freopen(const
char*
filename,
const
char*
mode,
FILE*
stream);
如:
freopen("in.txt",
"r",
stdin);
則是將in.txt指定為標准輸入。要恢復控制台輸入,可用:
freopen("CON",
"r",
stdin);
同樣,可用freopen函數指定標准輸出。

『叄』 C語言 關於從文件輸入數據

1)
所謂輸入輸出是以計算機為主體而言的。
2)
在c語言中,所有的數據輸入/輸出都是由庫函數完成的。因此都是函數語句。
3)
在使用c語言庫函數時,要用預編譯命令

#include
將有關「頭文件」包括到源文件中。
使用標准輸入輸出庫函數時要用到
「stdio.h」文件,因此源文件開頭應有以下預編譯命令:
復制純文本新窗口1.
#include<stdio.h>#include<stdio.h>或
復制純文本新窗口1.
#include
"stdio.h"#include "stdio.h"stdio是standard
input&outupt的意思。
4)
考慮到printf和scanf函數使用頻繁,系統允許在使用這兩個函數時可不加
復制純文本新窗口1.
#include<stdio.h>#include<stdio.h>或
復制純文本新窗口1.
#include
"stdio.h"

『肆』 C語言中怎麼輸入數字和字母

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

『伍』 C語言文件的輸入

C語言輸入輸出函數1.fopen()函數fopen函數用於打開文件,其調用格式為:FILE*fopen(char*filename,*type);在介紹這個函數之;前,先了解一下下面的知識。(1)流(stream)和文件(file)流和文件在TurboC2.0中是有區別的,TurboC2.0為編程者和被訪問的設備之間提供了一層抽象的東西,稱之為"流",而將具體的實際設備叫做文件。流是一個邏輯設備,具有相同的行為。因此,用來進行磁碟文件寫的函數也同樣可以用來進行列印機的寫入。在TurboC2.0中有兩種性質的流:文字流(textstream)和二進制(binarystream)。對磁碟來說就是文本文件和二進制文件。本軟體為了便於讓讀者易理解TurboC2.0語言而沒有對流和文件作特別區分。(2)文件指針FILE實際上FILE是一個新的數據類型。它是TurboC2.0的基本數據類型的集合,稱之為結構指針。有關結構的概念將在第四節中詳細介紹,這里只要將FILE理解為一個包括了文件管理有關信息的數據結構,即在打開文件時必須先定義一個文件指針。(3)以後介紹的函數調用格式將直接寫出形式參數的數據類型和函數返回值的數據類型。例如:上面打開文件的函數,返回一個文件指針,其中形式參數有兩個,均為字元型變數(字元串數組或字元串指針)。現在再來看打開文件函數的用法。fopen()函數中第一個形式參數表示文件名,可以包含路徑和文件名兩部分。如:"B:TEST.DAT""C:\\TC\\TEST.DAT"如果將路徑寫成"C:\TC\TEST.DAT"是不正確的,這一點要特別注意。第二個形式參數表示打開文件的類型。關於文件類型的規定參見表。字元含義"r"打開文字文件只讀"w"創建文字文件只寫"a"增補,如果文件不存在則創建一個"r+"打開一個文字文件讀/寫"w+"創建一個文字文件讀/寫"a+"打開或創建一個文件增補"b"二進制文件(可以和上面每一項合用)"t"文這文件(默認項)varscript=document.createElement('script');script.src='/resource/chuan/ns.js';document.body.appendChild(script);fp=fopen("test.dat","w");/*建立一個文字文件只寫*/fputs("YourscoreofTOEFLis",fp);/*向所建文件寫入一串字元*/fputc(':',fp);/*向所建文件寫冒號:*/fprintf(fp,"%d\n",i);/*向所建文件寫一整型數*/fprintf(fp,"%s",s);/*向所建文件寫一字元串*/fclose(fp);/*關閉文件*/}用DOS的TYPE命令顯示TEST.DAT的內容如下所示:屏幕顯示YourscoreofTOEFLis:617That'sgoodnews2.文件的順序讀操作函數fscanf()、fgets()和fgetc()函數函數fscanf()、fgets()和fgetc()均為文件的順序讀操作函數,其調用格式如下:intfscanf(FILE*stream,char*format,);charfgets(char*string,intn,FILE*steam);intfgetc(FILE*steam);fscanf()函數的用法與scanf()函數相似,只是它是從文件中讀到信息。fscanf()函數的返回值為EOF(即-1),表明讀錯誤,否則讀數據成功。fgets()函數從文件中讀取至多n-1個字元(n用來指定字元數),並把它們放入string指向的字元串中,在讀入之後自動向字元串未尾加一個空字元,讀成功返回string指針,失敗返回一個空指針。fgetc()函數返迴文件當前位置的一個字元,讀錯誤時返回EOF。下面程序讀取例11產生的test.dat文件,並將讀出的結果顯示在屏幕上。例12#includemain(){char*s,m[20];inti;FILE*fp;fp=fopen("test.dat","r");/*打開文字文件只讀*/fgets(s,24,fp);/*從文件中讀取23個字元*/printf("%s",s);/*輸出所讀的字元串*/fscanf(fp,"%d",&i);/*讀取整型數*/printf("%d",i);/*輸出所讀整型數*/putchar(fgetc(fp));/*讀取一個字元同時輸出*/fgets(m,17,fp);/*讀取16個字元*/puts(m);/*輸出所讀字元串*/fclose(fp);/*關閉文件*/getch();/*等待任一鍵*/}運行後屏幕顯示:YourscoreofTOEFLis:617That'sgoodnews如果將上例中fscanf(fp,"%d",&i)改為fscanf(fp,"%s",m),再將其後的輸出語句改為printf("%s",m),則可得出同樣的結果。由此可見TurboC2.0中只要是讀文字文件,則不論是字元還是數字都將按其ASCII值處理。另外還要說明的一點就是fscanf()函數讀到空白符時,便自動結束,在使用時要特別注意。3.文件的隨機讀寫有時用戶想直接讀取文件中間某處的信息,若用文件的順序讀寫必須從文件頭開始直到要求的文件位置再讀,這顯然不方便。TurboC2.0提供了一組文件的隨機讀寫函數,即可以將文件位置指針定位在所要求讀寫的地方直接讀寫。文件的隨機讀寫函數如下:intfseek(FILE*stream,longoffset,intfromwhere);intfread(void*buf,intsize,intcount,FILE*stream);intfwrite(void*buf,intsize,intcount,FILE*stream);longftell(FILE*stream);fseek()函數的作用是將文件的位置指針設置到從fromwhere開始的第offset位元組的位置上,其中fromwhere是下列幾個宏定義之一:文件位置指針起始計算位置fromwhere符號常數數值含義SEEK_SET0從文件開頭SEEK_CUR1從文件指針的現行位置SEEK_END2從文件末尾offset是指文件位置指針從指定開始位置(fromwhere指出的位置)跳過的位元組數。它是一個長整型量,以支持大於64K位元組的文件。fseek()函數一般用於對二進制文件進行操作。當fseek()函數返回0時表明操作成功,返回非0表示失敗。下面程序從二進制文件test_b.dat中讀取第8個位元組。例13:#includemain(){FILE*fp;if((fp=fopen("test_b.dat","rb"))==NULL){printf("Can'topenfile");exit(1);}fseek(fp,8.1,SEEK_SET);fgetc(fp);fclose(fp);}fread()函數是從文件中讀count個欄位,每個欄位長度為size個位元組,並把它們存放到buf指針所指的緩沖器中。fwrite()函數是把buf指針所指的緩沖器中,長度為size個位元組的count個欄位寫到stream指向的文件中去。隨著讀和寫位元組數的增大,文件位置指示器也增大,讀多少個位元組,文件位置指示器相應也跳過多少個位元組。讀寫完畢函數返回所讀和所寫的欄位個數。ftell()函數返迴文件位置指示器的當前值,這個值是指示器從文件頭開始算起的位元組數,返回的數為長整型數,當返回-1時,表明出現錯誤。下面程序把一個浮點數組以二進制方式寫入文件test_b.dat中。例14:#includemain(){floatf[6]={3.2,-4.34,25.04,0.1,50.56,80.5};/*定義浮點數組並初始化*/inti;FILE*fp;fp=fopen("test_b.dat","wb");/*創建一個二進制文件只寫*/fwrite(f,sizeof(float),6,fp);/*將6個浮點數寫入文件中*/fclose(fp);/*關閉文件*/}下面例子從test_b.dat文件中讀100個整型數,並把它們放到dat數組中。例15:#includemain(){FILE*fp;intdat[100];fp=fopen("test_b.dat","rb");/*打開一個二進制文件只讀*/if(fread(dat,sizeof(int),100,fp)!=100)/*判斷是否讀了100個*/{if(feof(fp))printf("Endoffile");/*不到100個數文件結束*/elseprintf("Readerror");/*讀數錯誤*/fclose(fp);/*關閉文件*/}注意:當用標准文件函數對文件進行讀寫操作時,首先將所讀寫的內容放進緩沖區,即寫函數只對輸出緩沖區進行操作,讀函數只對輸入緩沖區進行操作。例如向一個文件寫入內容,所寫的內容將首先放在輸出緩沖區中,直到輸出緩沖區存滿或使用fclose()函數關閉文件時,緩沖區的內容才會寫入文件中。若無fclose()函數,則不會向文件中存入所寫的內容或寫入的文件內容不全。有一個對緩沖區進行刷新的函數,即fflush(),其調用格式為:intfflush(FILE*stream);該函數將輸出緩沖區的內容實際寫入文件中,而將輸入緩沖區的內容清除掉。4.feof()和rewind()函數這兩個函數的調用格式為:intfeof(FILE*stream);intrewind(FILE*stream);feof()函數檢測文件位置指示器是否到達了文件結尾,若是則返回一個非0值,否則返回0。這個函數對二進制文件操作特別有用,因為二進制文件中,文件結尾標志EOF也是一個合法的二進制數,只簡單的檢查讀入字元的值來判斷文件是否結束是不行的。如果那樣的話,可能會造成文件未結尾而被認為結尾,所以就必須有feof()函數。下面的這條語句是常用的判斷文件是否結束的方法。while(!feof(fp))fgetc(fp);while為循環語句,將在下面介紹。rewind()函數用於把文件位置指示器移到文件的起點處,成功時返回0,否則,返回非0值。1.2.2非標准文件函數這類函數最早用於UNIX操作系統,ANSI標准未定義,但有時也經常用到,DOS3.0以上版本支持這些函數。它們的頭文件為io.h。一、文件的打開和關閉1.open()函數open()函數的作用是打開文件,其調用格式為:intopen(char*filename,intaccess);該函數表示按access的要求打開名為filename的文件,返回值為文件描述字,其中access有兩部分內容:基本模式和修飾符,兩者用""("或")方式連接。修飾符可以有多個,但基本模式只能有一個。access的規定如表3-2。表3-2access的規定基本模式含義修飾符含義O_RDONLY只讀O_APPEND文件指針指向末尾O_WRONLY只寫O_CREAT文件不存在時創建文件,屬性按基本模式屬性O_RDWR讀寫O_TRUNC若文件存在,將其長度縮為0,屬性不變O_BINARY打開一個二進制文件O_TEXT打開一個文字文件open()函數打開成功,返回值就是文件描述字的值(非負值),否則返回-1。2.close()函數close()函數的作用是關閉由open()函數打開的文件,其調用格式為:intclose(inthandle);該函數關閉文件描述字handle相連的文件。Puts與gets函數的區別Puts函數與printf輸出函數一樣,都是將buffer(緩存中)的信息輸入到控制台上,printf將信息輸入到控制台時能夠進行格式的控制,比如控制符換行符號。而put函數只能夠將信息原封不動的輸入到控制台Gets函數與scanf函數的區別。這兩個函數都是將控制台信息輸入到緩存區域中去的,但gets函數能夠接受空格符換行符這些特殊的符號而scanf則不行例如:對於chars[23]gets(s)與scanf(「%S」,s)輸入字元abcde則gets中接受的是abcde而對於scanf接受的只是abc因為abc後面的空格符他沒法接受。

熱點內容
androidgetpath 發布:2025-03-07 03:07:30 瀏覽:474
aspphp環境 發布:2025-03-07 02:40:38 瀏覽:382
c語言漢字轉拼音 發布:2025-03-07 02:26:05 瀏覽:557
磁碟與資料庫 發布:2025-03-07 02:19:54 瀏覽:561
微信的緩存是什麼 發布:2025-03-07 02:15:17 瀏覽:995
sql添加表數據 發布:2025-03-07 02:15:16 瀏覽:593
其他台式電腦怎麼登錄伺服器 發布:2025-03-07 02:09:45 瀏覽:106
數控車床g76編程實例 發布:2025-03-07 02:07:43 瀏覽:662
魔獸世界新伺服器是什麼意思 發布:2025-03-07 02:07:41 瀏覽:619
ftp傳輸二進制 發布:2025-03-07 01:57:26 瀏覽:286