不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2017-10-26 18:09:32  修改时间:2025-06-17 13:19:15  分类:13.C/C++/仓颉  编辑
  fopen(打开文件)

定义函数

FILE * fopen(const char * path,const char * mode);

函数说明

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r     打开只读文件,该文件必须存在。
r+   打开可读写的文件,该文件必须存在。
   打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a    以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+  以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。

返回值

文件顺利打开后,指向该流的 文件指针 就会被返回。若果文件打开失败则返回 NULL,并把错误代码存在 errno 中。

附加说明

一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。

范例

#include <stdio.h>

int main(int argc, char **argv)
{
	FILE *fp;
	fp = fopen("/Users/jianbao/ClionProjects/apue/123.c", "a+");
	if (fp == NULL)
	{
		printf("open fail\n");
	}
	else
	{
		printf("open success\n");
	}
    fclose(fp);

	return 0;
}
作者:AlbertWen  添加时间:2016-01-28 10:08:04  修改时间:2025-07-08 18:02:04  分类:13.C/C++/仓颉  编辑

gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、 Java),可以说gcc是GNU编译器集合。

g++ 是C++编译器。

cc 是 Unix系统的 C Compiler,一个是古老的 C 编译器。而 Linux 下 cc 一般是一个符号连接,指向 gcc;可以通过 $ ls -l /usr/bin/cc 来简单察看,该变量是 make 程序的内建变量,默认指向 gcccc 符号链接和变量存在的意义在于源码的移植性,可以方便的用 gcc 来编译老的用cc编译的Unix软件,甚至连 makefile 都不用改在,而且也便于 Linux 程序在 Unix下 编译。

CC 则一般是 makefile 里面的一个名字标签,即宏定义,表示采用的是什么编译器(如:CC = gcc)。

作者:AlbertWen  添加时间:2015-10-26 11:07:06  修改时间:2025-07-10 04:15:27  分类:13.C/C++/仓颉  编辑
作者:AlbertWen  添加时间:2015-11-07 23:50:58  修改时间:2025-06-29 02:12:28  分类:13.C/C++/仓颉  编辑

err_sys以及err_quit等函数不是C语言自带函数,是作者自己编写的函数。所以,想要运行书中的源代码,就必须自建一个头文件my_err.h把作者的代码拷贝进去,然后在程序中加载。

作者:AlbertWen  添加时间:2019-02-04 16:21:11  修改时间:2025-06-08 01:01:24  分类:11.PHP基础  编辑

preg_split() 函数通过一个正则表达式分隔字符串。

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

参数说明:

  • $flags:可选,可以是任何下面标记的组合(以位或运算 | 组合):

    • PREG_SPLIT_NO_EMPTY:如果这个标记被设置, preg_split() 将进返回分隔后的非空部分。
    • PREG_SPLIT_DELIM_CAPTURE:如果这个标记设置了,用于分隔的模式中的括号表达式将被捕获并返回。
    • PREG_SPLIT_OFFSET_CAPTURE:如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量。 注意:这将会改变返回数组中的每一个元素, 使其每个元素成为一个由第0 个元素为分隔后的子串,第1个元素为该子串在subject 中的偏移量组成的数组。
作者:AlbertWen  添加时间:2018-06-03 15:26:39  修改时间:2025-07-11 05:40:32  分类:08.Java基础  编辑

一、监听域对象中属性的变更的监听器

域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。  

这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

作者:AlbertWen  添加时间:2019-03-31 00:41:14  修改时间:2025-07-08 18:18:57  分类:15.OpenResty_Lua  编辑

当一个方法返回多个值时,有些返回值有时候用不到,要是声明很多变量来一一接收,显然不太合适(不是不能)。Lua 提供了一个虚变量(dummy variable),以单个下划线(“_”)来命名,用它来丢弃不需要的数值,仅仅起到占位的作用。

作者:AlbertWen  添加时间:2017-12-07 23:49:30  修改时间:2025-07-01 15:20:42  分类:18.系统设计/UML建模  编辑
作者:AlbertWen  添加时间:2018-02-20 20:54:54  修改时间:2025-07-08 18:02:07  分类:06.前端/Vue/Node.js  编辑

Amaze UI:中国首个开源 HTML5 跨屏前端框架

Layui[荐]经典模块化前端框架(JS组件)

ZUI: 一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。

MZUI:为移动端设计,基于 Flex 的 UI 框架。

作者:AlbertWen  添加时间:2017-10-29 10:15:23  修改时间:2025-07-10 05:01:38  分类:14.Golang/Ruby  编辑

go list 命令的作用是列出指定的 代码包 的信息。与其他命令相同,我们需要以 代码包导入路径 的方式给定代码包。被给定的代码包可以有多个。这些代码包对应的目录中必须直接保存有 Go 语言源码文件,其子目录中的文件不算在内。否则,代码包将被看做是不完整的。现在我们来试用一下:

hc@ubt:~$ go list cnet/ctcp pkgtool
cnet/ctcp
pkgtool