文本编辑器(第五节)
插入普通字符
让我们从编写一个函数开始,该函数用于在给定位置将单个字符插入到 erow
中。
kilo.c
步骤101
在行中插入字符
/*** 包含的头文件 ***/
/*** 宏定义 ***/
/*** 数据 ***/
/*** 终端相关函数 ***/
/*** 行操作函数 ***/
int editorRowCxToRx(erow *row, int cx) { … }
void editorUpdateRow(erow *row) { … }
void editorAppendRow(char *s, size_t len) { … }
void editorRowInsertChar(erow *row, int at, int c) {
if (at < 0 || at > row->size) at = row->size;
row->chars = realloc(row->chars, row->size + 2);
memmove(&row->chars[at + 1], &row->chars[at], row->size - at + 1);
row->size++;
row->chars[at] = c;
editorUpdateRow(row);
}
/*** 文件输入/输出函数 ***/
/*** 追加缓冲区函数 ***/
/*** 输出处理函数 ***/
/*** 输入处理函数 ***/
/*** 初始化函数 ***/
♎︎ 可编译,但无明显效果
memmove()
函数来自 <string.h>
头文件。它与 memcpy()
类似,但当源数组和目标数组重叠时使用它是安全的。
首先,我们验证 at
,它是我们想要插入字符的索引。请注意,at
允许超出字符串末尾一个字符的位置,在这种情况下,字符应该插入到字符串的末尾。

扫描二维码关注微信公众号,回复密码,即可获取密码
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/112
文章版权归作者所有,未经允许请勿转载。
THE END