【c语言】文件操作详解

news2024/11/17 5:49:46

主页:114514的代码大冒险

qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ )

Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com

 

 

目录

前言

一、文件是什么

二、文件的打开和关闭

1.文件指针

2.文件的打开和关闭

三,文件的顺序读写

三,文件的随机读写(此部分函数以增强对文件内容输入的自由度)

1 fseek

2 ftell

3 rewind

四,文本文件和二进制文件

 五,文件读取结束的判定

六,文件缓冲区

总结



前言

我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。
我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。
这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。
使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

一、文件是什么

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
1 程序文件
包括源程序文件(后缀为 .c , 目标文件( windows 环境后缀为 .obj , 可执行程序( windows 环境
后缀为 .exe )。
2 数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,
或者输出内容的文件。
本章讨论的是数据文件。
在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件。
3 文件名
一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含 3 部分:文件路径 + 文件名主干 + 文件后缀
例如:

 

为了方便起见,文件标识常被称为 文件名
这里要提一下,文件后缀不是文件名,不要以为这个文件的名字时“test.txt”,它的名字其实是“test”
而后面的内容是文件名后缀,这里以win11为例子展示文件后缀的显示办法:

 

 开启后:

 

二、文件的打开和关闭

1.文件指针

缓冲文件系统中,关键的概念是 文件类型指针 ,简称 文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名
字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统
声明的,取名 FILE .(要使用头文件stdio.h)
例如, VS2013 编译环境提供的 stdio.h 头文件中有以下的文件类型申明:

代码如下:

struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
       };
typedef struct _iobuf FILE;

不同的 C 编译器的 FILE 类型包含的内容不完全相同,但是大同小异。
每当打开一个文件的时候,系统会根据文件的情况自动创建一个 FILE 结构的变量,并填充其中的信息, 使用者不必关心细节。
一般都是通过一个 FILE 的指针来维护这个 FILE 结构的变量,这样使用起来更加方便。
下面我们可以创建一个 FILE* 的指针变量 :
FILE* pf;//文件指针变量
定义 pf 是一个指向 FILE 类型数据的指针变量。可以使 pf 指向某个文件的文件信息区(是一个结构体变
量)。通过该文件信息区中的信息就能够访问该文件。也就是说, 通过文件指针变量能够找到与它关联 的文件
比如:

 

 这里的文件信息区是存在于内存中的,它与外存中的那个路径对应的文件是有紧密联系的,相当于将外存中的那个文件部分重要属性(具体参照于不同的编译器,不同的编译器定义不同的文件类型声明)存储于文件信息区

2.文件的打开和关闭

文件在读写之前应该先 打开文件 ,在使用结束之后应该 关闭文件
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。ANSIC 规定使用 fopen 函数来打开文件, fclose 来关闭文件。

//打开文件
FILE * fopen ( const char * filename, const char * mode );
//关闭文件
int fclose ( FILE * stream );
打开方式如下:
文件使用方式
含义
如果指定文件不存在
“r” (只读)
为了输入数据,打开一个已经存在的文本文件
出错
“w” (只写)
为了输出数据,打开一个文本文件
建立一个新的文件
“a” (追加)
向文本文件尾添加数据
建立一个新的文件
“rb” (只读)
为了输入数据,打开一个二进制文件
出错
“wb” (只写)
为了输出数据,打开一个二进制文件
建立一个新的文件
“ab” (追加)
向一个二进制文件尾添加数据
出错
“r+” (读写)
为了读和写,打开一个文本文件
出错
“w+” (读写)
为了读和写,建议一个新的文件
建立一个新的文件
“a+” (读写)
打开一个文件,在文件尾进行读写
建立一个新的文件
“rb+” (读写)
为了读和写打开一个二进制文件
出错
“wb+” (读写)
为了读和写,新建一个新的二进制文件
建立一个新的文件
“ab+” (读写)
打开一个二进制文件,在文件尾进行读和写
建立一个新的文件

这里是不需要一次性记住全部的,随用随查,慢慢就会了,我们这里仅介绍用到的比较多的几个

r:

int main()
{
	FILE* pf = fopen("D:\\vs\\test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	else
	{
		printf("打开文件成功\n");
	}

	
	fclose(pf);
	pf = NULL;
	return 0;
}

这里说一下,未知的东西有点多,我们逐个解释,首先是fopen(我想啊,这里的pf指针就不需多说了吧,有疑问可再次阅读上文对应区域),欧克欧克,我们来讲解一下

速览定义,返回值为文件指针类型,第一个参数为要打开的文件的路径,例如:

此为绝对路径

也可以这样:

此为相对路径,不过这个默认的该程序所存在的文件夹

比如这样:

 

 在代码中使用双斜杠的原因是:斜杆+部分字符会被识别为转义字符如:\n换行符,\t水平制表符

而双斜杠在这里会抵消这种效果,且在双斜杠可以被转义成单斜杠   

第二个参数为:文件打开方式,也就是上文的那个表格,这里细说一下“r”的作用,"r"这里是读取打开此文件,然后接下来程序可以进行相应的操作,使用函数等等调用文件中的内容,fopen打开成功返回在内存中文件缓冲区(稍后详解)开辟的对应打开的文件的那块区域的指针,等会详解文件缓冲区会清晰一些。

fclose是将打开到文件关闭的函数,至于为什么要关闭,等会详解。

然后就是文件使用方式“w”了,这个与“r”不同,它会对要打开的文件进行初始化,也就是内容清零,然后进行内容的写入(通过程序向文件夹输入内容)。如果文件夹不存在,该函数会在此路径下,命名一个与输入文件名一致的文件   然后在进行写入操作

然后就是“a”了,它与前两个一致的是,都是对文本文件进行写入,这个与“w”的清零重新写入不同,它是在文件原有内容的基础上进行添加,而且是在内容末尾添加

三,文件的顺序读写

 

’这些函数除了后两个,其他的都是对文本内容进行操作,而末两个则是对而进制内容进行操作

为了测试函数我们先对文件进行内容的写入

写入单个字符的函数是

参数character需输入你要写入的那个字符

 这个是默认在文件的第一个位置进行字符的写入,也就是如图这个位置,

在第一次使用后,下一次该函数的写入位置就会发生变化,比如以下这样

 

在第一次使用后,光标(输入位置)会移动到如下图红色线条所示的位置

 

 

    FILE* pf = fopen("test.txt", "w");
	if (NULL == pf)
	{
	perror("fopen");
		return 1;
	}
	//写文件
	fputc('a', pf);
	fputc('b', pf);
	fputc('c', pf);
	fputc('d', pf);

 

 该函数参数是文件指针,

功能是在文件内容中读取一个字符,默认位置为内容的第一个字符


	int ch = fgetc(pf);
	printf("%c\n", ch);

	ch = fgetc(pf);
	printf("%c\n", ch);

	ch = fgetc(pf);
	printf("%c\n", ch);

输出为  

 注:这里的文件输入函数如“fputc”是无法在文件使用为“r”的情况下使用的,因为是“r”是只读操作,如下图:

 其他文件操作函数同理,使用前要注意文件的使用方式

fgets读取一行  fputs输入一行,大致功能与上文区别不大,这里就不多赘述了

接下来是fscanf函数,

 


 对比一下,只有函数参数的区别,fscanf多了一个文件指针,我们在使用的时候加上就是

以下是代码实例:

 这里要提前在文件夹中放置内容,但在输入名字时,不要输入汉字,因为这里取名字的格式是

字符串

 应当是上图这样一个内容

struct S
{
	char name[20];
	int age;
	float score;
};

int main()
{
	struct S s = { 0 };
	FILE* pf = fopen("test.txt", "r");



	if (NULL == pf)
	{
		perror("fopen");
		return 1;
	}
	//从文件中取出数据
	fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));
	//打印在屏幕上判断是否成功取出
	printf("%s %d %f\n", s.name, s.age, s.score);
	fclose(pf);
	pf = NULL;
	return 0;
}

下图为输出结果

 接下来的fprintf请按照上文的这种方式,自行进行解决(内容真的很相似),

剩下的两个是二进制,所以我们单独讲解,这里我们就先聊点别的

 OK,这里是相似的几个函数,我们已经聊过scanf与fscanf  ,fprintf与printf  ,那么我们这里就主要

讨论sscanf与 sprintf

 

 多了个字符指针参数,用法就很简单了,这个参数可以使“abcdef”(会被传成首元素的地址)这样的字符串,也可以是char *ch 这样的字符指针,都可以,举例:

	int arr1[30] = {0};
	int arr2[30] = {0};
	sscanf("zhangsan wangwu", "%s %s", arr1, arr2);

至于sprintf

 先放一段代码

#include <stdio.h>

int main()
{
  char a[100] = {0};
  sprintf(a, "你好,我是%s", "zhangsan");
  printf("%s",a);
  return 0;
}

很显然,这里可以看到的是,a被赋值成了sprintf第二个参数的内容(且按格式化%s输出“zhansan”),emmm,大致就是这样的一个功能,剩下的深入使用可以另做寻找,这里不是本文

的关键内容

但是这里还是要谈一下输入流的问题,统共有标准输入流(标准输入(stdin)是指键盘输入,标准输出(stdout)是在电脑屏幕上输出)与文件输入流(今天讲的程序文件操作)

也就是说,适用于所有输出or输入流的函数,参数不仅仅可以是文件指针,还可以是stdout  or   stdin

 

三,文件的随机读写(此部分函数以增强对文件内容输入的自由度)

1 fseek

根据文件指针的位置和偏移量来定位文件指针
int fseek ( FILE * stream, long int offset, int origin );

stream 属于文件指针类型,然后对应的是文件输入流,

offset指的是使用者想让指针偏移的位置,左移就是负数,右移是整数

origin:(指针位置移动时的参照)

 SEEK_SET是文件的起始位置

SEEK_CUR是文件指针的当前位置

SEEK_END是文件的末尾位置

在进行指针的偏移之后,就可以再对文件进行操作,这里举个例子(实际效果还请小伙伴自行演示):

 fseek ( pFile , 9 , SEEK_SET );
  fputs ( " sam" , pFile );

2 ftell

返回文件指针相对于起始位置的偏移量
long int ftell ( FILE * stream );

3 rewind

让文件指针的位置回到文件的起始位置

void rewind ( FILE * stream );

四,文本文件和二进制文件

根据数据的组织形式,数据文件被称为 文本文件 或者 二进制文件
数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是 二进制文件
如果要求在外存上以 ASCII 码的形式存储,则需要在存储前转换。以 ASCII 字符的形式存储的文件就是 本文件
一个数据在内存中是怎么存储的呢?
字符一律以 ASCII 形式存储,数值型数据既可以用 ASCII 形式存储,也可以使用二进制形式存储。
如有整数 10000 ,如果以 ASCII 码的形式输出到磁盘,则磁盘中占用 5 个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4 个字节( VS2022 测试)。

 

 附赠测试代码:

#include <stdio.h>
int main()
{
 int a = 10000;
 FILE* pf = fopen("test.txt", "wb");
 fwrite(&a, 4, 1, pf);//二进制的形式写到文件中
 fclose(pf);
 pf = NULL;
 return 0;
}

 以下图的方式查看文本二进制内容:

图一:

 图二:

这里再说一下

fread:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr – 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size – 这是要读取的每个元素的大小,以字节为单位。
nmemb – 这是元素的个数,每个元素的大小为 size 字节。
stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。

  • 成功读取的元素总数会以 size_t nmemb对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。

 五,文件读取结束的判定

牢记:在文件读取过程中,不能用 feof 函数的返回值直接用来判断文件的是否结束。
而是 应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束
1. 文本文件读取是否结束,判断返回值是否为 EOF fgetc ),或者 NULL fgets
例如:
fgetc 判断是否为 EOF .
fgets 判断返回值是否为 NULL
2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
例如:
     fread 判断返回值是否小于实际要读的个数。
正确的使用:
文本文件的例子:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int c; // 注意:int,非char,要求处理EOF
    FILE* fp = fopen("test.txt", "r");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
   }
 //fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOF
    while ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环
   { 
       putchar(c);
   }
//判断是什么原因结束的
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");
    fclose(fp);
}
二进制文件的例子:
#include <stdio.h>
enum { SIZE = 5 };
int main(void)
{
    double a[SIZE] = {1.,2.,3.,4.,5.};
    FILE *fp = fopen("test.bin", "wb"); // 必须用二进制模式
    fwrite(a, sizeof *a, SIZE, fp); // 写 double 的数组
    fclose(fp);
    double b[SIZE];
    fp = fopen("test.bin","rb");
    size_t ret_code = fread(b, sizeof *b, SIZE, fp); // 读 double 的数组
    if(ret_code == SIZE) {
        puts("Array read successfully, contents: ");
        for(int n = 0; n < SIZE; ++n) printf("%f ", b[n]);
        putchar('\n');
   } else { // error handling
       if (feof(fp))
          printf("Error reading test.bin: unexpected end of file\n");
       else if (ferror(fp)) {
           perror("Error reading test.bin");
       }
   }
    fclose(fp);
}

六,文件缓冲区

ANSIC 标准采用 缓冲文件系统 处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“ 文件缓冲区
从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。
缓冲区的大小根据C编译系统决定的。

 

这里可以使用fflush函数进行缓冲区的刷新,如果是对输出缓冲区刷新,那么就将缓冲区的内容一次性过渡到硬盘中,如果是对输入缓冲区刷新,那么就将缓冲区的内容过渡到程序数据区

还要说的一点是,fclose函数在关闭文件时,会对输出缓冲区进行刷新,将缓冲区剩余内容过渡到硬盘(外存)中去。所以每次打开文件后,要进行文件的关闭,否则可能会导致读写文件的问题。


总结

 文件操作使程序运行更加具有生产意义,且实现了程序数据与外存数据的交互,是程序员必备的技能,希望这次的文件操作详解能够帮助到你

okok,这就是本次的文件操作详解了,如果还有疑问欢迎私信,我随时方便,那么下期再见啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机体系结构量化研究方法》 B.4 虚拟存储器 笔记

B.4 虚拟存储器 一、基本概念 1、虚拟存储器把物理存储器划分成块以后分配给不同的进程&#xff1b;采用一种保护机制来限制各个进程&#xff0c;使其仅能访问属于自己的块。 2、重定位机制允许同一程序在物理存储器中的任意位置运行。 3、页和段用于块&#xff0c;缺页错误…

SSM框架整合入门案例

文章目录SSM整合案例1&#xff0c;SSM整合1.1 流程分析1.2 整合配置步骤1&#xff1a;创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建Spring…

《Buildozer打包实战指南》第七节 常见的打包问题

目录 无法访问xxx网址&#xff0c;连接超时 目标路径xxx已经存在&#xff0c;并且不是一个空目录 每次打包时间都要很久 待更新 在打包过程中难免会碰到一些问题&#xff0c;在本节&#xff0c;笔者会把自己碰到的一些问题的解决方案写出来&#xff0c;好让读者节省时间。 …

KaiwuDB CTO 魏可伟:1.0 时序数据库技术解读

大家好&#xff0c;首先非常感谢大家参与本次 KaiwuDB 1.0 系列产品发布会。作为国内数据库新生品牌力量&#xff0c;KaiwuDB 是浪潮集团控股的数据库企业&#xff0c;我们聚焦在工业物联网、数字能源、交通车联网、智慧产业等快速发展的重要领域&#xff0c;希望为各大行业客户…

06技术太卷我学APEX-技术太卷我学APEX

06技术太卷我学APEX-技术太卷我学APEX 0 概述 自学APEX第7天&#xff0c;用APEX做了一个自学的笔记APP&#xff0c;名称就叫《技术太卷我学APEX》 1 登录页面 登录页面设置&#xff1a;就改了下名称和加上了测试账号。 登录页面效果&#xff1a; 这个是 APEX功能页面之一…

前端面试题合集-第一篇

前端面试题合集-第一篇 &#x1f514;每周不定时更新&#xff01; ⛄️不要让自己失去竞争力&#xff01; ☀️哪里都不是避风港&#xff0c;保持竞争力! 1. CSS选择器的优先级 !important>内联>id选择器>类选择器>标签选择器>通配符选择器>继承 在同一…

Java IO流补充 - Properties - IO流框架commons-io

文章目录IO流补充知识Properties结合IO流集合IO流框架IO流补充知识 Properties结合IO流集合 我们先来认识Properties属性集对象 Properties其实就是一个Map集合&#xff0c;但是我们一般不会当集合使用&#xff0c;因为HashMap更好用。 Properties核心作用: 属性文件&#xf…

设计模式_行为型模式 -《观察者模式》

设计模式_行为型模式 -《观察者模式》 笔记整理自 黑马程序员Java设计模式详解&#xff0c; 23种Java设计模式&#xff08;图解框架源码分析实战&#xff09; 概述 定义 观察者模式&#xff0c;又被称为发布-订阅&#xff08;Publish / Subscribe&#xff09;模式&#xff0c…

RSA与证书

这篇文章详细讲述一下RSA与证书的相关内容。内容有点多&#xff0c;但都是干货。 一、RSA算法 1.1简介 RSA算法是由美国三位科学家Rivest、Shamir和Adleman于1976年提出并在1978年正式发表的公开密码算 法&#xff0c;其命名取自三位创始人名字的首字母缩写。该算法基于数论…

CSS 计数器

CSS 计数器 CSS 计数器可让你根据内容在文档中的位置调整其显示的外观。例如&#xff0c;你可以使用计数器自动为网页中的标题编号&#xff0c;或者更改有序列表的编号。 本质上 CSS 计数器是由 CSS 维护的变量&#xff0c;这些变量可能根据 CSS 规则跟踪使用次数以递增或递减…

【Git】利用 GIT 做版本控制

目录 写在前面 备份方法 效果展示 写在前面 在做项目开发时&#xff0c;不免需要进行版本更替或者使增加新功能等&#xff0c;这时很重要的环节是对版本进行备份&#xff0c;以便在新版本开发过程中出现问题&#xff0c;而当工程文件过大时&#xff0c;在对文件备份时需要占…

Java——多线程01(创建和启动,优先级调度,守护线程,出让/礼让线程,插队/插入线程)

目录1.多线程的创建和启动方式1.线程第一种启动方式&#xff08;继承Thread类&#xff09;2.多线程的第二种启动方式实现Runnable接口3.多线程的第三种启动方式实现Callable接口2.Thread多线程中的方法1.getName(), setName(),currentThread(),sleep2.Thread优先级调度方法3.守…

【手把手教你学会51单片机】数码管的动态显示

注&#xff1a;本文章转载自《手把手教你学习51单片机》&#xff01;因转载需要原文链接&#xff0c;故无法选择转载&#xff01; 如若侵权&#xff0c;请联系我进行删除&#xff01;上传至网络博客目的为了记录自己学习的过程的同时&#xff0c;同时能够帮助其他一同学习的小伙…

类的初始化2023018

类的初始化&#xff1a; 第一次使用某个类&#xff0c;例如Person类&#xff0c;系统通常会在第一次使用Person类时加载这个类并初始化这个类。在类的准备阶段&#xff0c;系统将会为该类的类变量分配内存空间&#xff0c;并指定默认初始值。当Person类初始化完成后&#xff0c…

高并发系统设计-Feed流系统设计

有两种实现方式&#xff1a;push和pull实现&#xff0c;首先讨论push模式 概念 我们在讲如何设计Feed流系统之前&#xff0c;先来看一下Feed流中的一些概念&#xff1a; Feed&#xff1a;Feed流中的每一条状态或者消息都是Feed&#xff0c;比如朋友圈中的一个状态就是一个Fe…

布隆过滤器算法

目录布隆过滤器主要有下面的参数&#xff1a;结论举例布隆过滤器主要有下面的参数&#xff1a; 1.假设数据量为n&#xff0c;预期的失误率为p&#xff08;布隆过滤器大小和每个样本的大小无关&#xff09;。 2.根据n和p&#xff0c;算出BloomFilter一共需要多少个bit位&#x…

【年度总结 | 2022】想干什么就去干吧,少年

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 程序人生专栏 | 年度总结 &#xff08; 2022 &#xff09; 作者&#xff1a; 计算机魔术师 版本&#xff1a; 1.0 &#xff08…

关于性能测试需要知道的

随着各企业的业务发展、用户量以及数据量的不断增加&#xff0c;系统承载的压力也会随之增加&#xff0c;服务系统的性能好坏又严重影响企业的利益。因此&#xff0c;性能测试重要性与需求越来越强烈。 常见的性能测试目的 性能测试是确定系统在特定工作负载下的稳定性和响应…

JAVA 基础语法——(HelloWorld案例编写,Notepad软件的安装和使用,注释,关键字,常量,变量,计算机存储单元,数据类型,标识符,类型转换)

目录 HelloWorld案例的编写 Notepad软件的安装和使用 注释 关键字 常量 变量 计算机存储单元 数据类型概述 标识符 类型转换 HelloWorld案例的编写 首先定义一个类——–public class 类名在类定义后加上一对大括号 {}在大括号中间添加一个主(main)方法/函数——–publi…

详解Curl各参数的含义

详解Curl各参数的含义1. Introduction2. Detail2.1 参数-k2.2 参数-X2.3 参数-x2.4 参数-w %{http_code}2.5 参数-d2.6 参数-H2.7 参数-F2.8 参数-O2.9 参数-o2.10 参数-u2.11 参数-b2.12 参数-G3. Awakening1. Introduction [rootnolan ~]# curl -h Usage: curl [options...]…