IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言——文件操作&&考核仨题 -> 正文阅读

[C++知识库]C语言——文件操作&&考核仨题

文件

什么是文件
文件是数据源的一种,他最主要的作用就是保存数据。作为计算机不可或缺的一部分,文件可以储存很多不同种类的信息。
文件(file)通常是在磁盘或固态硬盘上的一段已命名的存储区。例如在c语言中常出现的stdio.h就是一个文件的名称,该文件中包含的就是头文件内的相关信息。
文件的分类
在C语言中,程序提供了两种文件模式:文本模式和二进制模式。
文本模式:文本文件只能存储char型字符变量。它通过文本编辑器就能对其中的数据进行修改。文本文件实质上也是一种特殊的二进制文件,因为它在磁盘上的存储方式也是二进制形式。
二进制模式:在二进制文件格式中,文件内的所有内容都以二进制形式(0或1)存储。所以它存储的类型是多样的。对于不同类型的二进制文件,如果想要准确的得到它所存储的信息,那就必须需要特别的解码器。
那么这两种类型的文件有什么优缺点呢?文本文件存储的都是字符类型,所以每个字符所占的位置都是相同的,因而在对这段字符进行译码操作时,就会相对来说比较方便。而二进制文件的存储利用率更加高。例如一个高位数字,你用文本文件来存放,就会需要相应长度的空间。而二进制文件只需要一个int或long类型的空间就行了,所占的内存就会相对来说更小点。
如何打开文件?
如果我们要对文件进行操作,那我们必须建立起和文件之间的连接。先向大家介绍文件的打开函数。那么在C语言中,存储在<stdio.h>中的fopen( )函数就可以打开文件。
那么我们来具体看fopen这个函数:FILE * fopen(char * filenname,char * mode);
filename是这个文件的名称(包括文件路径),而mode则问打开方式。
然后我们返回一个FILE类型的指针。FILE类型是一个结构体,它是用来保存文件信息的。

FILE * fp;
fp = fopen(char *str1, "str2");

FILE * fp;
fp = fopen("D:\\学生管理系统\\jiaoshizhanghao.txt","a");

在这里插入图片描述
如何关闭文件?
文件一旦使用完毕,我们就应该对文件进行关闭,以释放掉相关资源。这可以保证空间不会被乱利用,而导致文件发生丢失。
int fclose ( FILE * fp);

FILE * fp;
fp = fopen("D:\\学生管理系统\\jiaoshizhanghao.txt","a");
fclose(fp);

文件打开阶段的操作
了解完这两部分,让我们来简单动手操作下文件的相关操作,以此加深我们的印象:
1.

#include<stdio.h>
#include<stdlib.h>
int main(void) {
	FILE* fp = fopen("D:\\c语言\\新建文本文档.txt", "r");
	if (fp == NULL) {
		puts("文件打开失败");
	}
	char str[25];
	while (fgets(str, 24, fp)!=NULL) {//读取文件信息并打印
		printf("%s", str);
	}
	fclose(fp);
	return 0;
}

结果:
在这里插入图片描述
出现这个问题的原因是文件本身编码出现问题,把文件类型改为ANSI即可。
在这里插入图片描述
更改后输出结果:
在这里插入图片描述
2.提取文件信息到链表里:

struct zhanghu *tiqu(const char name[]) {//提取文件信息 
	FILE *fp = fopen(name, "r");
	if (fp == NULL) {
		printf("未找到文件%s\n", name);
		exit(0);
	}
	struct zhanghu *head = (struct zhanghu * )malloc(sizeof(struct zhanghu));
	head->next = NULL;
	while (!feof(fp)) {
		struct zhanghu *p = (struct zhanghu * )malloc(sizeof(struct zhanghu));
		fscanf(fp, "%s %s %s\n", p->zhanghao, p->mima, p->classnum);
		p->next = head->next;
        head->next = p;
	}
	fclose(fp);
	return head;
}

考核后仨道题:
在这里插入图片描述

bool findNumberIn2DArray(int** matrix, int matrixSize, int* matrixColSize, int target) {
    if (matrix == NULL || matrixSize == 0 || *matrixColSize == 0 ) {
        return false;
    }
    int i, j; 
    for (i = 0, j = *matrixColSize - 1; i < matrixSize && j >= 0;) {
        if (target < matrix[i][j]) {//越左->越小
            j--;//向左移动寻找小于等于target的数
        } else if (target > matrix[i][j]) {//越下->越大
            i++;//向下移动寻找大于等于target的数
        } else {//不大不小->刚刚好
            return true;
        }
    }
    return false;
}

在这里插入图片描述

int translateNum(int num) {
    if (num < 10) {
    	return 1;
	}
	int arr = 0, i;
	int n = num;
	while (n > 0) {
		n = n / 10;
		arr++;
	}
	int nums[100] = {0};
	for (i = arr - 1; i >= 0; i--) {
		nums[i] = num % 10;
		num = num / 10;
	}
	int a[100];
	a[0] = 1;
	if (nums[0] * 10 + nums[1] <= 25) {
		a[1] = 2;
	} else {
		a[1] = 1;
	}
	for (i = 2; i < arr; i++) {
		if (nums[i] + nums[i - 1] * 10 <= 25 && nums[i] + nums[i - 1] * 10 > 9) {
			a[i] = a[i - 1] + a[i - 2];
		} else {
            a[i] = a[i - 1];
        }
	}
	return a[arr - 1];
}

在这里插入图片描述

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    struct ListNode * head = (struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode * p = head;
    while (list1 && list2) {
    	if (list1->val < list2->val) {
    		head->next = list1;
    		list1 = list1->next;
    		head = head->next;
		} else {
			head->next = list2;
    		list2 = list2->next;
    		head = head->next;
		}
	}
	if (list1 == NULL) {
		head->next = list2;
	} else {
		head->next = list1;
	}
	return p->next;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:22:52  更:2022-05-09 12:23:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 0:55:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码