当前位置:首页 » 编程语言 » c语言文件管理

c语言文件管理

发布时间: 2024-10-31 22:09:27

❶ 怎样用c语言保存一个文件

在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。

在C语言中,二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。

而对文本文件的处理就不一样了。Windows 和 DOS 下的文本文件以CRLF(0X0D 0X0A)作为换行符,而C语言本身以LF(0X0A)作为换行符,所以以文本方式写入数据时,会将LF(0X0A)替换为CRLF(0X0D 0X0A),而读取数据时又会替换回来。

CR(0X0D)表示回车符,也就是 ' ';CL(0X0A)表示换行符,也就是 ' '。在Linux和其他一些系统中,文本文件的换行符就是LF(0X0A),与C语言的换行符一样。所以也就没有了文本方式和二进制方式的区分,使不使用'b'标志都是一样的。

(1)c语言文件管理扩展阅读

C语言中文件的读取和写入

在C语言中写文件

//获取文件指针FILE *pFile = fopen("1.txt", //打开文件的名称

"w"); // 文件打开方式 如果原来有内容也会销毁//向文件写数据fwrite ("hello", //要输入的文字

//文字每一项的大小 以为这里是字符型的 就设置为1 如果是汉字就设置为4

strlog("hello"), //单元个数 我们也可以直接写5

pFile //我们刚刚获得到的地址 );//fclose(pFile); //告诉系统我们文件写完了数据更新,但是我们要要重新打开才能在写fflush(pFile); //数据刷新 数据立即更新

❷ 什么手机软件能看c语言文件

可以下载C语言学习的APP进行查看。

解决这个问题的方法如下:

1、首先点击打开C语言学习软件。

❸ C语言库文件(头文件)有哪些

下面给出Turbo C的全部".h"文件。Turbo C头文件:

头文件
说明

alloc.h 说明内存管理函数(分配、释放等)。
assert.h 定义 assert调试宏。
bios.h 说明调用IBM—PC ROM BIOS子程序的各个函数。
conio.h 说明调用DOS控制台I/O子程序的各个函数。
ctype.h 包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。
dir.h 包含有关目录和路径的结构、宏定义和函数。
dos.h 定义和说明MSDOS和8086调用的一些常量和函数。
error.h 定义错误代码的助记符。
fcntl.h 定义在与open库子程序连接时的符号常量。
float.h 包含有关浮点运算的一些参数和函数。
graphics.h 说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。
io.h 包含低级I/O子程序的结构和说明。
limit.h 包含各环境参数、编译时间限制、数的范围等信息。
math.h 说明数学运算函数,还定了 HUGE VAL 宏, 说明了matherr和matherr子程序用到的特殊结构。
mem.h 说明一些内存操作函数(其中大多数也在STRING.H中说明)。
process.h 说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。
setjmp.h 定义longjmp和setjmp函数用到的jmp buf类型,说明这两个函数。
share.h 定义文件共享函数的参数。
signal.h 定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。
stddef.h 定义读函数参数表的宏。(如vprintf,vscarf函数)。
stddef.h 定义一些公共数据类型和宏。
stdio.h 定义Kernighan和Ritchie在Unix System V 中定义的标准和扩展的类型和宏。还定义标准I/O 预定义流:stdin,stdout和stderr,说明 I/O流子程序。
stdlib.h 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等。
string.h 说明一些串操作和内存操作函数。
sys\stat.h 定义在打开和创建文件时用到的一些符号常量。
sys\types.h 说明ftime函数和timeb结构。
sys\time.h 定义时间的类型time[ZZ(Z] [ZZ)]t。
time.h 定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。
value.h 定义一些重要常量,包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围。C系统提供了丰富的系统文件,称为库文件。C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过。在".h"文件中包含了常量定义、 类型定义、宏定义、函数原型以及各种编译选择设置等信息。另一类是函数库,包括了各种函数的目标代码,供用户在程序中调用。通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h" 文件。

❹ 如何用c语言制作一个学生信息管理系统,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//链表结点结构体声明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函数申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//创建菜单,进入选择循环

while(1)

{

PrintMenu();

printf("请输入您的选择编号:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("欢迎进入信息管理版块! ");

printf("25 1、添加学生 ");

printf("25 2、删除学生 ");

printf("25 3、修改学生信息 ");

printf("25 4、返回 ");

printf("请输入您的选择编号: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("输入有误,请重新输入! ");

}

case 2:

{

//信息查询

system("cls");

printf("欢迎进入信息查询版块! ");

printf("请输入要查询的学生编号:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //检测输入是否成功,调试程序用

FindStu(head,j); //查询并输出

printf(" 请输入回车键返回主菜单!");

getchar();

system("cls");

break;

}

(4)c语言文件管理扩展阅读:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。

实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

❺ c语言学生管理系统,保存和读取文件模块有错误,写在txt中的正常,但是读出来就有问题了

你的open()函数有几个问题,其中1和2是你的问题的主要原因。

1. 作为while循环判断条件的fgetc()函数从文件流读取了一个字符,移动了文件流的读取指针,导致文件数据并没有全部由fscanf()函数读取。

2. 没有判断fscanf()函数的返回值,如果出现读取失败、读不全8项数据等情况,仍然认为数据是有效的。

3. 如果打开文件失败,一开始分配的内存没有释放。

4. 如果打开文件成功但文件为空(while循环体一次都没有执行),一开始分配的内存释放了,但head还是指向这个已经释放的内存空间。

5. 估计你的struct student里各个成员变量是字符数组,如果是这样的话,fscanf()函数里引用这些成员变量时不需要加'&'。(但这个只是个warning,不是error)。

试试这个open()函数。

void open()
{
FILE *fp;
struct student *p1, *p2;
int ret;
/* 读取文件前先把链表头设为NULL,表示链表为空 */
head = NULL;
/* 尝试打开文件 */
fp = fopen("student.txt", "r");
if (fp == NULL)
{
printf("打开文件失败! ");
return;
}
/* p1指向链表最后一个有效的元素,目前为NULL */
p1 = NULL;
/* 为链表第一个元素分配内存,并把链表头指向该元素 */
head = p2 = (struct student *)malloc(sizeof(struct student));
while (1)
{
ret = fscanf(fp, "%s %s %s %s %s %s %s %s",
p2->student_id, p2->name, p2->age, p2->gender,
p2->born, p2->address, p2->number, p2->E_mail);
/* 如果fscanf()没有读取8项数据,就认为是失败 */
if (ret != 8)
{
/* 如果这是链表第一个元素,则把链表头设为NULL */
if (head == p2)
head = NULL;
/* 如果前一个元素非空,则把它的next指针设为NULL,表示链表结束 */
if (p1 != NULL)
p1->next = NULL;
/* 释放当前元素的内存 */
free(p2);
/* 退出循环 */
break;
}
/* p1指向链表最后一个有效的元素 */
p1 = p2;
/* 为下一个元素分配内存 */
p2 = (struct student *)malloc(sizeof(struct student));
p1->next = p2;
}
fclose(fp);
printf("成功打开文件! ");
}
热点内容
搭建web验证服务器地址 发布:2024-11-01 00:09:57 浏览:623
拼车网源码 发布:2024-11-01 00:09:48 浏览:898
数据库事务sql 发布:2024-11-01 00:09:47 浏览:722
安卓系统底部三个按键怎么设置 发布:2024-11-01 00:08:08 浏览:90
锁定ip地址服务器 发布:2024-11-01 00:02:02 浏览:223
编程串联 发布:2024-11-01 00:01:55 浏览:177
缓存转码软件 发布:2024-11-01 00:00:47 浏览:586
数据库存储过程声明部分 发布:2024-10-31 23:42:24 浏览:297
数据库无冗余 发布:2024-10-31 23:30:33 浏览:944
茄子存储 发布:2024-10-31 23:22:47 浏览:558