A. c語言初級文件操作
將就寫一個,在VC6下運行成功,注意,程序中getData函數里文件名改為你自己的文件名
//英語不好將就
#include <stdio.h>
#include <stdlib.h> //use malloc, free
#include <string.h> //use memset
#include <ctype.h> //use isdigit
#define ERROR_ILLEGAL_CHAR 1 //define error illegal character as 1
#define ERROR_NUMBERS_DIF 2 //define error numbers is not the same in different line as 2
#define ERROR_FILE_ERROR 3 //define error file error as 3
typedef struct _node{
int num;
struct _node *next;
}node;
node *head = NULL;
void insert(int num)
{
if (NULL == head)
{
head = (node*)malloc(sizeof(node));
(*head).num = num;
(*head).next = NULL;
}
else
{
node* p = head;
while (NULL != p->next) //move to end
{
p = p->next;
}
p->next = (node*)malloc(sizeof(node));
p = p->next;
(*p).num = num;
(*p).next = NULL;
}
}
void output(int rows, int cols)
{
node *p = head;
if (NULL == p)
return;
for (int i=0; i<rows; i++)
{
for (int j=0; j<cols; j++)
{
printf("%-4d", p->num);
p = p->next;
}
printf("\n");
}
}
int getData(int *row, int *col)
{
FILE *f;
char ch = 0;
char t[100];
int index = 0;
int countline = 0;
int totalline = 0;
/*若文件內容是在程序中以二進制方式打開寫入的數據則將打開方式改為"rb"*/
if ((f=fopen("D:\\source\\read.dat", "r")) == NULL)
{
return ERROR_FILE_ERROR;
}
memset(t, -1, 100);
do
{
ch = fgetc(f);
if (isdigit(ch))
{
t[index++] = ch;
continue;
}
else
{
switch (ch)
{
case ',':
case '.':
case ' ':
if ((-1 != t[0]))
{
insert(atoi(t));
memset(t, -1, 100);
index = 0;
countline++;
}
break;
case EOF:
case '\n':
if ((-1 == t[0]) && (0 == countline))//null line
{
break;
}
else
{
if (-1 != t[0])
{
insert(atoi(t));
memset(t, -1, 100);
index = 0;
countline++;
}
}
if (0 != countline)
{
if (0 == totalline)
{
totalline = countline;
*col = totalline;
}
else
{
if (countline != totalline)
{
return ERROR_NUMBERS_DIF;
}
}
}
++*row;
countline = 0;
break;
default:
return ERROR_ILLEGAL_CHAR;
}
}
}while (ch != EOF);
return 0;
}
void main()
{
int rows = 0;
int cols = 0;
switch(getData(&rows, &cols))
{
case 0:
break;
case ERROR_ILLEGAL_CHAR:
printf("illegal chracter is line%d\n", rows+1);
exit(0);
case ERROR_NUMBERS_DIF:
printf("numbers in line%d is not the same as previous\n", rows+1);
exit(0);
case ERROR_FILE_ERROR:
printf("can not open file!");
exit(0);
}
output(rows, cols);
if (NULL != head)
{
free(head);
}
}
B. c語言寫入文件方法
要寫入文件,可以按照以下步驟進行操作:
1 在代碼中引用stdio.h,即
#include <stdio.h>
C語言的所有文件操作介面,均聲明在這個頭文件中。
2 定義FILE *類型的變數。
3 打開文件,使用函數為fopen。格式為:
FILE *fopen(char *filename, char *mode);
參數filename為要寫入的文件名,mode為打開的方式,如果僅需寫入文件,可以使用"w"或
"wb"。
返回值為文件指針類型,賦值給之前定義的變數。如果返回值為NULL,代表打開失敗,無法寫入。
4 對文件進行寫操作。C語言中有很多寫文件的介面,包括fprintf, fwrite, fputs, fputc等等。
寫操作可以執行多次。
5 在全部寫操作完成後,執行fclose函數關閉文件指針。這樣就實現了C語言寫入文件。
C. c語言程序文件操作
首先,你需要建立一個.c或者.cpp文件,還要建立一個.txt文件進行操作處理,並且寫上c語言的編譯預處理,頭文件,主函數。
2/6
然後你需要定一個文件指針,具體格式FILE*指針名。這個指針其實是一個結構指針,大家也不必過多的了解這個到底是什麼,只知道他就這樣用就可以了。
3/6
如果你想打開文件的話,你需要調用fopen函數,對於這個函數大家不必驚慌,其實很簡單,具體的格式為 文件指針=fopen("文件路徑+文件名","讀寫方式");
4/6
對於讀寫的方式有很多,比如r是只讀,w是打開文件新建並且只寫,r+是打開文件能讀能寫,w+新建文件能讀能寫。
5/6
如果程序把文件打開後不關閉,對於文件來說是很不安全的,所以需要關閉文件的函數fclose();如果想關閉p文件指針所指的文件,就寫fclose(p);這個函數具有返回值,如果關閉成功,就返回0.如果關閉失敗,就返回非0
6/6
此外,你可以調用fprintf()函數往文件里加東西,或者調用fputc向文件里添加字元,還可以調用fputs函數向文件里添加字元串。具體格式為
fprintf(文件指針,"添加格式",添加變數);
fputc(文件指針,添加的字元變數);
fputs(文件指針,添加的字元串);
注意事項
函數的參數不能少
D. c語言怎麼打開文件內容
1、首先需要下載專門的c語言編程軟體,一般從網路下載就可以。
E. c語言如何讀取文件並輸出
c語言讀取文件並輸出的代碼如下:
#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打開輸入文件
FILE*fp2=fopen("output.txt","w");//打開輸出文件
if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出
puts("不能打開文件!");
return0;
}
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);//關閉輸出文件,相當於保存
return0;
}
C語言中使用fopen()函數實現文件的讀取,使用fgetc()函數讀取文件中的字元,使用fclose()實現文件的關閉,注意:打開文件流必須要關閉文件流,不然會持續佔用計算機內存資源。
(5)c語言文件操作菜鳥教程擴展閱讀:
fopen函數
C語言中fopen函數可以兩個參數,fopen(const char *filename, const char *mode)。
第一個參數filename:這是 C 字元串,包含了要打開的文件名稱。
第二個參數mode:這是 C 字元串,包含了文件訪問模式。
F. 如何用C語言創建和刪除文件
一、創建文件:
在C語言中創建文件,使用fopen函數,同時指定為只寫即可。
參考代碼如下:
/*
函數功能:創建文件名為s的文件。
返回值:
-1參數錯誤
0創建成功
1文件已存在
2創建失敗
*/
intcreate_file(char*s)
{
FILE*fp;
if(s==NULL||s[0]=='