c基础语言学习网址
c语言基本函数整理
1、发送格式化输出到 str 所指向的字符串
int sprintf(char *str, const char *format, ...)
参数:
str 指向字符串的指针
fomat 一部分为写入到str的文本,一部分是format的格式标签参数值
返回值:
成功 返回写入的字符数
失败 返回负数
2、getchar() & putchar() 函数
int getchar(void)
返回值:
该函数获取从键盘输入一个字符,且它一次只能保存一个字符并返回一个整数
int putchar(int c)
参数:
从键盘获取字符的getchar()的值,并且输出到屏幕
返回值:
3、fopen函数
FILE *fid = fopen("文件路径","权限")
返回值:成功 返回一个将这些文件打开的信息保存到FILE结构体指针
失败 返回null
文件权限:首先文件分为文本文件和二进制文件,这些都要在文件权限中体现出来加以区别
"r" 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
"w" 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
"a" 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
"r+" 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
"w+" 以“写入/更新”方式打开文件,相当于w和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
"a+" 以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
由于有文本文件和二进制文件两种,所以分别用“t”(代表文本文件,可以省略不写)和“b”(如果是二进制文件的操作必须加b)来区分
如:
将读写方式放在读写权限的末尾:"rb"、"wt"、"ab"、"r+b"、"w+t"、"a+t"
将读写方式放在读写权限的中间:"rb+"、"wt+"、"ab+"
总结:
1、也就是说 带有r的权限只能在有文件的前提下做读取或者读取与写入,不能在没有文件的前提下创建新的文件。
2、带有w 的权限都可以在没有文件的前提下创建新的文件,如果有文件则删除里面所有内容,写入新的内容(旧的数据与新数据不能共存),但是“w”只能写入不能读取,而“w+”可以读取。
3、带有a 的权限都可以在有文件前提下直接在文件内容的末尾追加新的内容(保留原来的数据),如果没有文件前提下都可以新建文件,但是“a”只有写入权限,而“a+”可以写入也可以读取。
fclose()函数
关闭文件函数,文件使用完毕之后,必须关闭文件以释放相关资源,防止数据丢失
int fclose(FILE *fid);
fseek()函数
定位文件流的指针函数
int fseek(FILE *fid, long offset, int fromwhere);
stream: 文件指针
offset: fromwhere 的偏移量,正数为在fromwhere的位置向前偏移offset,负数为向后偏移offset。
fromwhere:表示文件从哪里开始偏移
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
ftell()函数
获取文件指针目前的位置,即从文件开头到目前文件位置的长度(字节为单位),因此这个函数与fseek可以读取文件的字节大小。
int ftell (FILE *fid);
fread()函数
int fread( void *buffer, size_t size, size_t count, FILE *fid )
buffer:缓存数据的内存指针,数组,或者动态开辟的内存
size:每次读取的文件的大小(每次读取多少个字节)
count:需要读取多少次(size * count = 读取的总共字节数)
fid :文件指针
rewind()函数
void rewind(FILE *stream)
重新将fid的指针位置定位到文件的开头
静态局部变量实际上是全局变量 两者变量的地址在一个区间 但是作用域只在局部函数有效。
自我问题思考
1、c语言静态分配与动态分配有什么优缺点?
2、void类型指针如何理解或者函数如何理解