c語言怎樣從文件中輸出內容
Ⅰ c語言中如何將保存文件中的信息輸出來
你如果不知道文件的格式,那沒法輸出,你如果知道格式,把信息從文件中讀出來,再依照格式來處理就能夠了
Ⅱ C語言:在當前目錄下的文件中查找記錄並輸出到屏幕,咋編
代碼文本:
#include "stdio.h"
#include <string.h>
struct STU{
char nm[21],id[12];
int s[5];
};
int main(int argc,char *argv[]){
struct STU stu;
char ts[21];
FILE *fp;
if(fp=fopen("stu.dat","r")){
printf("Please enter a name or ID... ");
scanf("%20s",ts);
printf(" To find the result is: ");
while(fscanf(fp,"%s%s%d%d%d%d%d",stu.nm,stu.id,stu.s,stu.s+1,stu.s+2,stu.s+3,stu.s+4)!=EOF)
if(strcmp(ts,stu.nm)==0 || strcmp(ts,stu.id)==0){
printf(" %s %s%4d%4d%4d%4d%4d ",stu.nm,stu.id,stu.s[0],stu.s[1],stu.s[2],stu.s[3],stu.s[4]);
fclose(fp);
return 0;
}
printf("Not find... ");
fclose(fp);
}
else
printf("Open the file failure, exit... ");
return 0;
}
Ⅲ 如何用c語言輸出一個文件中的數據
循環讀取文件 顯示在屏幕上即可。
FILE*fp=fopen("a.txt","r");
intc;
while((c=fgetc())!=EOF)
putchar(c);
fclose(fp);
這個是逐個位元組讀取輸出的。
Ⅳ 怎樣用C語言輸出一文件的內容
無法直接輸出文件內容,需要先將文件讀入到內存,再輸出到標准輸出上。
可以採用逐個字元讀入,每讀入一個輸出一個的方式。
區分文件類型,操作有所不同。
1 文件本身為文本文件,那麼逐個直接輸出即可。
FILE *fp = fopen("name.txt", "r");
int c;
while((c=fgetc(fp))!=EOF) putchar(c);
2 文件為二進制文件,直接輸出結果會是亂碼。這時需要輸出二進制值,並自行換行,使得輸出美觀。
FILE *fp = fopen("name.bin", "rb");
int c;
int i = 0;
while((c=fgetc(fp))!=EOF)
{
printf("0x%02X,", c);//16進制方式輸出字元。
i++;
if(i%8==0) printf("\n"); //每輸出8個字元換行一次。
}
Ⅳ C語言中如何輸出文件中的指定行全部內容
先用將文件中所有內容讀到二維字元數組buf[][]中。
要輸出第x行的內容,直接輸出buf[x-1]即可
全部讀入還有一個好處,當要修改文件內容時,先讀入數組,在數組中做修改,再寫迴文件,遠比在文件中直接修改方便得多。
#include<stdio.h>
#defineM10010
#defineN256
charbuf[M][N];
intmain(){
FILE*file;
charfileName[50]="in.txt";//文件名
//讀入
file=fopen(fileName,"r");//打開文件
if(file==NULL)//打開文件失敗
return1;
intn=0;
while(fgets(buf[n],N,file)!=NULL){//依次讀取文件內容,第n+1行讀到buf[n]中,直到讀到文件結束
n++;
}
fclose(file);//關閉文件
//顯示第x行
inti,x;
scanf("%d",&x);//讀入要顯示的是第幾行
printf("%s",buf[x-1]);//顯示該行
//修改
buf[0][0]='X';
//...
//寫回
file=fopen(fileName,"w");//打開文件
if(file==NULL)//打開失敗
return1;
for(i=0;i<n;i++)//buf中的內容寫到文件
fprintf(file,"%s",buf[i]);
fclose(file);//關閉並保存文件
return0;
}
Ⅵ c語言如何讀取文件並輸出
1、C語言標准庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。
2、常式:
#include<stdio.h>
int a;
char b,c[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打開輸入文件
FILE * fp2 = fopen("output.txt", "w");//打開輸出文件
if (fp1==NULL || fp2==NULL) {//若打開文件失敗則退出
puts("不能打開文件!");
rturn 0;
}
fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數
b=fgetc(fp1);//從輸入文件讀取一個字元
fgets(c,100,fp1);//從輸入文件讀取一行字元串
printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數
fputs(c,fp2);//向輸出文件寫入一行字元串
fputc(b,fp2);//向輸出文件寫入一個字元
fprintf(fp2,"%d",a);//向輸出文件寫入一個整數
fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return 0;
}
Ⅶ C語言如何從文本文件中輸出指定行文字
提供一個思路
ascii表示的符號范圍。
你可以判斷字元串,是否為ascii碼,是忽略。
不是,輸出。
上面的變數還應該定義一些操作字元串的指針。
相關有關編碼信息參考以下babybubble網路知道:
c/c++支持的是ascii,不過漢字編碼中,gb2312與ascii是兼容的,所以可以在c中獲得漢字的gb2312編碼
gb2312是兩個位元組的,第一位元組是高八位,第二位元組是低八位,比如下面的程序:
#include
#include
int
main()
{
char
a[5];
strcpy(a,"啊");
printf("%xh
%xh\n",(unsigned
char)a[0],(unsigned
char)a[1]);
return
0;
}
a[0]是「啊」字的高八位,a[1]是低八位,程序運行結果是a[0]=b0
a[1]=a1,用16進製表示的,所以「啊」字的gb2312編碼是b0a1了~
輸出時要強制轉換成unsigned
char,不然就變成負數了,因為編碼是以8位的無符號整數為單位的
當然也可以轉成10進制啦,比如
int
b;
b=(unsigned
char)a[0]*256+(unsigned
char)a[1];
b即為漢字的10進制gb2312編碼了
Ⅷ c語言怎麼把東西寫到文件里,再從文件輸出到屏幕上
用WritePrivateproFileString()和GetPrivateproFileString()兩個函數就可以了啊,不用打開文件,關閉文件,定位,移動文件指針之類的
為防止有人說C下不能用, 特寫一個簡單的
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
structSTRUCT
{
charname[20];
floatchinese;
floatmath;
};
charfilename[]={"z:\1.txt "};
structSTRUCTs[3];
intcount=0;
intmain()
{
inti;
for(i=0;i<3;i++)
{
printf(" 請輸入第%d個學生信息(姓名語文數學)用空格間隔: ",i+1);
fflush(stdin);
scanf("%s%f%f",s[i].name,&s[i].chinese,&s[i].math);
}
chartemp[3];
charstr[20];
WritePrivateProfileStringA("All","count","3",filename);
for(i=0;i<3;i++)
{
sprintf(temp,"%d",i+1);
WritePrivateProfileString(temp,"name",s[i].name,filename);
sprintf(str,"%.1f",s[i].chinese);
WritePrivateProfileString(temp,"chinese",str,filename);
sprintf(str,"%.1f",s[i].math);
WritePrivateProfileString(temp,"math",str,filename);
}
return0;
}
Ⅸ C語言怎樣將文本文件中的內容讀取列印
使用文件操作函數fopen,fscanf即可。
1.fopen的函數原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r
以只讀方式打開文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀數據。
rw+
讀寫打開一個文本文件,允許讀和寫。
w
打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
(原來的EOF符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數據。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
wt+
讀寫打開或著建立一個文本文件;允許讀寫。
at+
讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b
字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
2.常式:
#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回錯誤代碼
while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //從文本中讀入並在控制台列印出來
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址
return 0;
}
Ⅹ C語言中,如何將文本文件的內容輸出到屏幕
#include <stdio.h>
#define MAX 50 /* 文件名長度最大為 MAX 個字元 */
#define BUFFERLEN /* 文件緩沖區長度最大為 BUFFERLEN 個字元 */
void main( )
{
FILE * fpr ; /* 定義一個文件指針變數 fpr */
char my_filename[MAX], buffer[BUFFERLEN] ;
gets(my_filename) ; /* 從鍵盤上輸入要打開的文本文件名 */
fpr = fopen(my_filename, "r" ) ; /* r:以文本方式打開文件 */
if( fpr == NULL ) /* 若文件打開失敗,則輸出錯誤信息,並直接退出程序 */
{
printf("Can't open %s for read !\n", my_filename ) ;
exit(1) ;
}
fgets(buffer, BUFFERLEN, fpr ) ; /* 從文本文件中讀取一行數據 */
while( !feof(fpr) ) /* 當文件沒有結束時,輸出一行文本內容到屏幕 */
{
printf("%s", buffer) ;
fgets(buffer, 500, fpr) ; /* 再從文本文件中讀取下一行數據 */
}
fclose(fpr) ; /* 當整個文件內容讀取結束時,關閉文件指針 */
}