首页 > 其他分享 >C语言【文件操作】

C语言【文件操作】

时间:2023-11-26 20:44:27浏览次数:31  
标签:文件 const 字符 int C语言 char 参数 操作

C语言【文件操作】

1、输入/输出流的定义。

​ C语言中,文件输入/输出以流的方式进行。

​ 读还是写,输入还是输出,是站在内存(程序)的角度来看的。从程序(内存)向 数据源(如文件、网络等)传递数据的过程叫做数据,读数据使用的路径叫做输入流,一般读数据的过程是一个解码的过程;从数据源(如文件、网络等)向 内存(程序)传递数据的过程叫做数据,写数据使用的路径叫做输出流,一般写数据的过程是一个编码的过程。

​ 编码和解码使用的字符集不一致时会出现乱码。

2、标准输入输出(一般指从键盘输入,从控制台输出)
scanf(...) 和 printf(...) 略
// getchar 用于从标准输入流(通常是键盘)读取一个字符。以下是其函数定义:
int getchar(void);	// 返回一个数值(读取的字符的ASCII码),用变量接收处理

// putchar 用于将一个字符写入到标准输出流(通常是控制台)。以下是其函数定义:
int putchar(int character);	// 返回一个整数值(写入字符的ASCII码)。参数为写入字符。
// gets 用于从标准输入流读取一个字符串。
char *gets(char *str);	// 返回值和参数都是读取到的那个字符串。

// puts 用于将参数输出到控制台。
int puts(const char *str);	// 返回成功输出的字符个数。参数为要输出的字符串。
// 有些函数主要作用是操作文件的(比如从文件中读数据),改变一下参数,也可成为标准输入输出(比如从控制台中拿数据),比如下面这个函数:
fgets(指针, 长度, stdin);	// 第一个参数存数据,长度,stdin指定为操作对象为控制台。
3、文件读写

​ 以下的文件操作函数都在<stdio.h>中

/** 
*		打开文件
*	返回一个操作文件的指针。	
*	第一个参数为要操作的文件路径及文件名。
*		相对路径和绝对路径知识略。win路径分隔符为/或\\(转义),Unix为/,当前目录下可以加./也可不加。
*	第二个参数为模式。如"r" ----- 这个模式是个字符串。
*		r只读。w清空原文件并写入。a追加。b二进制。+为省略r和w。(b和+不能单独使用)
*		组合有:rb、wb、ab、r+、w+、a+、rb+、r+b、wb+、w+b、ab+、a+b
*		r/r+不创建新文件,文件不存在时不能正确读取; 写文件时,如果目录不存在则报错
*		使用w时,未关闭流继续写则为追加。
*/
FILE *fopen(const char *filename, const char *mode);	
/* 
	写文件
*/

// 第一种。一次写一个字符。
int fputc(int character, FILE *stream);	// 成功返回写入字符的ASCII码;失败返回EOF,即-1

// 第二种。写入字符串。第一个参数为要写入的字符串;第二个参数为文件指针。
int fputs(const char *str, FILE *stream); // 成功返回写入的字符个数;失败返回EOF,即-1

// 第三种。第一个参数为文件指针;第二个参数为带占位符的字符串;...为可变参。
int fprintf(FILE *stream, const char *format, ...);	//成功返回写入字符个数;失败返回EOF,即-1
/*
	读文件
*/

// 第一种。读一个字符。
int fgetc(FILE *stream);	// 返回读取字符的ASCII码。失败返回EOF,即-1
// 第二种。读一个字符串。之前介绍过它的读取控制台的数据。第二个参数为个数;第三个参数为文件指针或指定控制台读
char *fgets(char *str, int num, FILE *stream);	// 返回值和第一个参数都是读取到的字符串。失败返回NULL。
// 第三种。
int fscanf(FILE *stream, const char *format, ...);
fscanf(file, "%s %s %d", msg1, msg2, &num);	// 读取到后面的变量中。占位符之间的空格表示文件中的空格或换行。
union {
    int a;
    int b;
} *p, u;
p = &u;	// 对于自定义数据类型来说,下面要使用指针时,必须这样指向一下。
const int *p;	// p可改变指向,*p不可改变
int const *p;	// p可改变指向,*p不可改变
int * const p;	// p不可改变指向,*p可改变
cosnt int * const p;	// p不可改变指向,*p也不可改变
// 简单来说,p前的const把p给锁定了,*前的const把*p给锁定了,都有则都锁定。
// int 和 const 紧挨着时,他俩可以交换位置。

​ 在vscode中,让编译出的可执行文件在控制台输出且编码方式改为GBK编码的方式为:task.json文件中的args属性中添加:"-fexec-charset=gbk";在lauch.json文件中修改"configurations"属性第一个数组的“externalconsole”属性改为true。

​ getchar()会吃掉'\n',他就相当于scanf("%c", 变量); 所以有时需要使用两个getchar()才可以使控制台输入完后停留。

​ scanf("%d\n", 变量); 它不吃回车或换行是因为它不是%c。如果它在getchar()前,它前面如果还有输入,输入中如果按了回车它也不吃,它后面的getchar()也吃不掉,回车就被消耗掉了。

#include<stdlib.h>

int main(){
    system("这里面可以填写cmd的命令");
    return 0;
}

case中的break是跳出switch;if中的break是跳出这层循环。

注意下面代码中的知识点

char *p = "hello";	 // 这个hello是个字面量,不可更改
*(p+2) = 'a';   	//报错

标签:文件,const,字符,int,C语言,char,参数,操作
From: https://www.cnblogs.com/wangsiyaoa/p/17857889.html

相关文章

  • 文件查找,打包压缩及解压
    9.1文件查找使用which命令在环境变量PATH设置的目录中查找符合条件的命令文件。使用locate命令查找还可以使用find命令查找(速度较慢)添加-ls可以查看文件的详细信息还可以通过-maxdepth指定查找的目录的深度。另外,find命令还可以根据时间查找、根据文件属主或属组查找以及根据文......
  • Linux学习随笔——文件查找、打包压缩及解压
    一、文件查找echo命令可以查看变量PATH的值;which命令可以在环境变量PATH设置的目录中查找符合条件的命令文件,查看其是否存在以及执行的位置;locate命令可以让用户快速查找到所需要的文件或目录,在使用该命令之前可先使用updatedb命令手动更新数据库;find命令:查找文件添加“i”忽......
  • C语言模拟进程状态
    首先定义进程状态的枚举类型为ProcessStatetypedefenum{NEW,READY,RUNNING,BLOCKED,TERMINATED}ProcessState;而后据图中进程运行代码intmain(){ProcessStateprocess=NEW;printf("Processcreated.State:NEW\n");process=REA......
  • 代码随笔-Python练习之读取本地文件
    1importre2importrequests34#读取本地的xml文件5withopen('.\lol.txt','r',encoding='utf-8')asf:6forlineinf:7if'"instance_id"'inline:8start_index=line.fi......
  • Linux操作系统学习7
    Linux操作系统存储管理在此分享一下Linux操作系统的存储管理。在Linux操作系统中,存储管理是非常重要的一部分。它涉及到如何管理计算机的内存、磁盘和其他存储设备,以确保系统的高效运行。Linux操作系统的存储管理主要包括以下几个方面:1.内存管理:Linux操作系统使用虚拟......
  • curl 中减少内存分配操作
    今天我在libcurl内部又做了一个小改动[1],使其做更少的malloc。这一次,泛型链表函数被转换成更少的malloc(这才是链表函数应有的方式,真的)。研究malloc几周前我开始研究内存分配。这很容易,因为多年前我们curl中就已经有内存调试和日志记录系统了。使用curl的调试版本,并......
  • Linux文件权限
    1基本权限UGOU:owner,属主G:group,属组O:other,其他用户用户对文件的权限还取决于文件的属性,即文件赋予角色什么权限。结合两者才能得知一个用户对于一个文件的权限。2文件属性使用ll即可查看文件属性第一个字符为文件类型,在Linux中,文件有如下几种类型:d:文件夹-:普通文件l:软......
  • 文件权限
    在Linux系统中,每个文件和目录都关联着一组权限,这些权限决定了谁可以对文件进行何种操作。文件权限通常分为三个主要部分:所有者权限、群组权限和其他用户权限。所有者权限:文件或目录的所有者拥有最高级别的权限,可以控制文件的读取、写入和执行。群组权限:Linux系统中可以为文件分......
  • IDEA快捷操作
    查阅Ctrl+P:参数信息(Parameterinfo)Ctrl+Q:快速文档(Quickpopups)Ctrl+Shift+I:符号定义(方法、类等的定义)FindandreplaceCtrl+F:当前文件查找Ctrl+Shift+F:多文件查找Ctrl+R:当前文件替换Ctrl+Shift+R:多文件替换F3:下一个Shift+F3:上一个FilestructureCtrl+F12:弹出窗......
  • linux - find 查找文件
    1.-name在当前目录以及子目录中根据文件名进行查找find-name"apt.md"2.-iname忽略大小写进行查找find-iname"apt.md"3.-mindepth,-maxdepth设置从根目录下查找的目录层级find/-mindepth3-maxdepth5-namepasswd4.-exec对查找到的文件执行命令find-name......