當前位置:首頁 » 編程語言 » C語言程序怎麼輸入文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言程序怎麼輸入文件

發布時間: 2022-09-04 14:21:53

『壹』 怎樣用c語言輸入文件中的某個內容。

/*【例12-2】已知一個文本文件f.txt中保存了5個學生的計算機等級考試成績,包括學號、姓名和分數,文件內容如下: */
/* 301101 張文 91 */
/* 301102 陳慧 85 */
/* 301103 王衛東 76 */
/* 301104 鄭偉 69 */
/* 301105 郭溫濤 55 */
#include"stdio.h"
#include"stdlib.h"
int main(void)
{
FILE *fp;
int score;
long int num;
char name[10];
if((fp=fopen("f.txt","r"))==NULL)
{
printf("File open error!\n");
exit(0);
}
printf("num\tname\tscore\n");
while(!feof(fp))
{
fscanf(fp,"%ld%s%d",&num,name,&score);
printf("%ld\t%s\t%d\n",num,name,score);
}
if(fclose(fp))
{
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
這是我寫的一個程序,希望對你有幫助,有不懂得可以問。
對了,你得把上面的5行內容保存到文本文檔裡面去,文件名為f.txt,再把它和保存程序的文件放在同一目錄下。

『貳』 在C語言中怎樣讓用戶輸入文件名來打開一個文件

#include <stdio.h>
int main(){
FILE *fp;
char filename[100]; //文件名
char tempstr[1024]; //讀文件的緩沖
printf("請輸入你要打開的文件名及路徑,如c:\\temp.txt\n");
gets(filename); //這句要用戶輸入文件名
if ((fp=fopen(filename,"r"))==NULL){//打開文件,並判斷是否有打開錯誤
printf("打開文件%s出現錯誤\n",filename);
return 0;
}
//以下顯示文件內容
while(fgets(tempstr,1024,fp)!=NULL) //讀文件一行內容,最多1024字元到緩沖區,並判斷是否文件已經結束
printf("%s",tempstr); //顯示緩沖區內容
fclose(fp); //關閉文件
}

『叄』 c語言程序有很多輸出,怎麼寫入文件

用fprintf啊
#include
#include
#include
FILE
*stream;
int
main(
void
)
{
int
i
=
10;
double
fp
=
1.5;
char
s[]
=
"this
is
a
string";
char
c
=
'\n';
stream
=
fopen(
"fprintf.out",
"w"
);
fprintf(
stream,
"%s%c",
s,
c
);
fprintf(
stream,
"%d\n",
i
);
fprintf(
stream,
"%f\n",
fp
);
fclose(
stream
);
system(
"type
fprintf.out"
);
return
0;
}
就在前面加個文件名就行了
類比printf

『肆』 怎麼用c語言寫一個 程序。實現從鍵盤輸入字元並寫入一個文件。

1、C語言標准庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。一般的C語言教程都有文件操作一章,可以找本教材進一步學習。
2、常式:

#include<stdio.h>
charc;
intmain(){
FILE*fp2=fopen("output.txt","w");//打開輸出文件
if(fp2==NULL){//若打開文件失敗則退出
puts("不能打開文件!");
rturn0;
}
c=getchar();//從鍵盤讀取一個字元
fputc(c,fp2);//向輸出文件寫入一個字元
fclose(fp2);//關閉輸出文件,相當於保存
return0;
}

『伍』 C語言文件輸入/輸入問題

就憑這學習態度,不給分都給你講!
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])//這個就像二樓給你解釋的那樣
{
int ch;
FILE *fp;
long count=0;
if(argc!=2)//這個argc是命令行參數的個數 運行程序的時候會自動賦值的
{
printf("Usage:%s filename\n",argv[0]);
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL)//這個說明你的 第二個參數應該是個文件名
{
printf("Can't open %s \n",argv[1]);
exit(1);
}
while((ch=getc(fp))!=EOF)//對文件進行讀操作 一個字元一個字元的讀直至文件末尾,EOF為文件結束的標志 ps:應該是fgetc吧
{
putc(ch,stdout); //這個應該是將其寫入stdout文件吧,可是文件並沒有打開啊,你確定程序是正確的?
count++; //計算文件所含字元數
}
fclose(fp);
printf("File %s has %ld characters\n",argv[1],count);

return 0;
}

『陸』 怎麼把c語言編的程序的結果輸入到一個文本文件中

c語言編的程序的結果輸入到一個文本文件中可以使用fprintf;

例:

#include<stdio.h>

main(){

FILE *fpt;

fpt = fopen("wendangming.txt","w");//打開文檔,寫入

fprintf(fpt,"Hello world");

fclose(fpt);

}

(6)C語言程序怎麼輸入文件擴展閱讀

它打開一個文本文件,逐個字元地讀取該文件

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

fstream testByCharFile;

int num;

char c;

testByCharFile.open("6.5.cpp",ios::in);

while(!testByCharFile.eof())

{

testByCharFile >> c;

num++;

}

testByCharFile.close();

cout << num << endl;

}

『柒』 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語言程序運行怎樣輸入數據

比方說
int
a;
printf("請輸入一個數字:");
scanf("%d",&a);
printf("你輸入的數字是:%d",a);
當按回車時就代表你確定了輸入

『玖』 C語言的文件輸入輸出操作

先把那個換行用getchar() 代替,否則那個換行符會被寫到文件中。而後面的getchar()是你真正要寫入文件的第一個字元

『拾』 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後面的空格符他沒法接受。