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]=='