fgets 函数的声明如下:
|
1 |
char *fgets(char *s, int size, FILE *stream); |
s 表示待接收字符串的缓冲区,size 为最大大小,stream 为读取的数据流。
对于数据的读取来说,函数实际最多读到 size - 1 个字节,如果读取的数据比这个长,会自动截断,保证在最后以\0 结尾,要注意的是读取字符时会把\n 也读进来。
一、问题描述 运行程序时出现以下错误,原因是程序运行时需要的动态库找不到:
|
1 |
./app: error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory |
解决方案有以下三种。 二、解决方案 2.1 方案 1 把需要的库文件复制到系统的默认库路径下:
|
1 |
> sudo cp libxxx.so /lib |
... 阅读更多
一、时间介绍 unix 环境下一共有两种时间值: 日历时间 (Calendar time):该值是自 1970 年 1 月 1 日 00:00:00 以来所经过的秒数累计值,也叫国际标准时间 (UTC,早期的手册称 UTC 为格林尼治标准时间),这些时间值可用于记录文件最近一次的修时间等,是最常用到的时间。 进程时间 (Pro ... 阅读更多
一、安装插件 在插件管理后台页面,输入 WP Mail SMTP 搜索插件安装,安装完成后的设置界面: 二、设置邮箱账户 这里使用的是 QQ 邮箱,QQ 绑定了域名邮箱 [email protected] 。要注意的是 QQ 邮箱不能直接使用密码登录,要通过邮箱授权码登录,这里的操作可以参考 python 发送邮件。 ... 阅读更多
pkg-config 的作用是列出系统中库的基本信息,例如,查询 pcre 库的相关信息:
|
1 2 |
$ pkg-config --libs libpcre2-8 -L/usr/local/pcre2-10.31/lib -lpcre2-8 |
常用选项为: --list-all:列出所有已安装的共享库。 --cflags:列出指定共享库的预处理和编译 flag 。 --libs:列出指定共享库 ... 阅读更多
fgets 函数的声明如下:
|
1 |
char *fgets(char *s, int size, FILE *stream); |
s 表示待接收字符串的缓冲区,size 为最大大小,stream 为读取的数据流。
对于数据的读取来说,函数实际最多读到 size - 1 个字节,如果读取的数据比这个长,会自动截断,保证在最后以\0 结尾,要注意的是读取字符时会把\n 也读进来。
习惯了 consolas 字体,deepin 终端默认不带,只能自己手动添加。 首先下载字体,consola 字体下载地址
|
1 2 |
wget https://jsdx.sc.chinaz.com/Files/DownLoad/font2/904.rar unrar e 904.rar |
deepin 系统字体存放地址为:/usr/share/fonts/,在该目录下添加文件夹 consolas 并把解压出来的 ... 阅读更多
某些情况下为了完成一些功能,需要用到可变长参数的函数,例如我们最常用的 printf 和 scanf 函数:
|
1 2 |
scanf("%d %d", &a, &b); printf("%d %d\n", a, b); |
它们首先都是一个字符串打头,后面再跟上不定数量的参数,为我们的输出形式提供了多样性。
对于像这样的不定长参数的函数来说,它的声明形式为:
|
1 |
int func(int a, int b, ...); |
do { ... } while(0)是 C/C++中常见的定义方式,使用它构造后的宏定义不会受到大括号、分号等的影响,总是会按你期望的方式调用运行。
以下宏定义:
|
1 |
#define f(a,b) a(a); b(b) |
对于语句 f(1,2);,宏定义将会替换成:
|
1 |
a(1); b(2); |
一、判断编译器是 C 或者 C++ 通过__cplusplus 判断 C/C++:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// 如果是 C++,使用扩展 C 的关键字 #ifdef __cplusplus extern "C" { #endif struct string_t *create_string(int max_len); struct string_t *copy_string(const char *str); void release_string(struct string_t *str); #ifdef __cplusplus } #endif |
|
1 2 |
set tabstop=4 set softtabstop=4 |
使用空格替换 TAB:
|
1 2 |
set ts=4 " 一个 tab=4 空格 set expandtab |