c语言文件操作练习

以一个%5d的格式存放20个整数的文件,顺序号定为0到19,输入某一顺序号之后,读出相应的数据并显示在屏幕上。
运用了链表,文件的操作,对于fprintf、fscanf、fseek函数的使用,虽然是一个很简单的任务,但让我对于这些知识点的运用和巩固做的很充分,调试了很久,收获颇丰!


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<assert.h>
#include<unistd.h>

int suiji()
{
	return rand()%20;
}
typedef struct node
{
	int num;
	int data;
	struct node *next;
}NODE;

NODE *createlist()
{
	NODE *head = (NODE *)malloc(sizeof(NODE));
	assert(head != NULL);
	
	head->num = -9999;	
	head->data = -9999;
	head->next = NULL;

	return head;
}

void addlist(NODE *head, int num, int data)
{
	NODE *p = head;
	NODE *pnew = (NODE *)malloc(sizeof(NODE));
	assert(pnew != NULL);
	pnew->num = num;
	pnew->data = data;
	
	while(p->next != NULL) 
	{
		p = p->next;
	}
	pnew->next = p->next;	
	p->next = pnew; 
}

void writelist(NODE *head)
{
	NODE *p = head->next;
	FILE *fp = fopen("f4.dat", "w");
	if(fp == NULL)
	{
		perror("open error");
	}
	while(p)
	{
		fprintf(fp, "%2d,%5d\n", p->num, p->data);
		p = p->next;
	}
	fclose(fp);
}

void readlist(NODE *head1)
{
	char ch;
	NODE *p1 = head1->next;
	NODE *pnew = (NODE *)malloc(sizeof(NODE));
	FILE *fp = fopen("f4.dat", "r");
	if(fp == NULL)
	{
		perror("open error");
	}
	
	while(1)
	{
		fscanf(fp, "%d,%d", &pnew->num, &pnew->data);
//		sleep(1);
//		printf("%d\n",pnew->num);
		addlist(head1, pnew->num, pnew->data );
		if(pnew->num == 19)
		{
			break;
		}
		fseek(fp, 1, SEEK_CUR);
	}

	fclose(fp);
}
int find(NODE *head, int number)
{
	NODE *p = head->next;
	while(p)
	{
		if(p->num == number)
		{	
			printf("%d\n", p->data);
			return 1;
		}
		p = p->next;
	}
	printf("输入序号不存在!\n");
	return 0;
}
void printlist(NODE *head)
{
	NODE *p = head->next;
	while(p)
	{
		printf("%d:%d\n", p->num, p->data);
		p = p->next;
	}
}
int main()
{
	int number;
	srand(time(NULL));
	NODE *head = createlist();
	NODE *head1 = createlist();
	for(int i = 0; i < 20; i++)
	{
		addlist(head, i, suiji());
	}
	printlist(head);
	writelist(head);
	readlist(head1);
//	printlist(head1);
	printf("请输入序号:\n");
	scanf("%d", &number);
	find(head1, number);
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 学习 C 语言文件操作的最佳方式是首先通过学习书籍和在线教程来获取基本知识,然后练习一些基本的示例程序,以加深理解。另外,你还可以尝试自己编写一些程序,并尝试使用 C 语言的文件操作功能来完成不同的任务。 ### 回答2: 要练习C语言文件操作,可以按照以下步骤进行: 1. 理解文件操作的基本概念:了解C语言文件操作函数和相关的数据类型,例如文件指针、文件打开模式等。 2. 编写简单的文件读写程序:从文件读取数据并打印出来,或者将一些数据写入到文件。这样的练习可以帮助你熟悉文件读写的操作流程和相关函数的使用。 3. 打开、创建和关闭文件练习使用fopen()函数打开或创建文件,并使用fclose()函数关闭文件。可以尝试使用不同的文件打开模式,例如读取模式("r")和写入模式("w")。 4. 读取和写入不同类型的数据:尝试使用不同的文件操作函数,如fscanf()和fprintf(),来读取和写入不同类型的数据,如整数、浮点数和字符串。 5. 文件定位和指针操作:了解和练习使用fseek()函数和ftell()函数进行文件定位操作,以及使用fgetc()和fputc()等函数进行文件指针的移动和操作。 6. 错误处理和异常情况处理:尝试使用feof()和ferror()等函数检测文件结尾和错误状态,并处理可能的异常情况,以保证程序的稳定性与安全性。 7. 练习使用文件系统相关的函数和库:例如使用<dirent.h>库的函数来遍历目录,或者使用其他文件操作相关的函数,如rename()和remove()等。 在练习过程,可以配合查阅C语言文件操作函数的相关文档和教程,加深对文件操作的理解和熟练度。同时,多进行实践和实际应用,将文件操作与其他C语言知识结合起来,例如结构体、指针等,提高实际编程能力和解决问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值