我打算在c中做一个文本编辑器.所以只想知道保存文本的数据结构是什么.我阅读使用链表是一种方法,但效率不高.请指出一些参考资料,我可以很好地了解需要使用的内容.我打算使用ncurses库来获取用户输入和捕获键和UI.
使用现有编辑器的源代码有点过于复杂,所有文本编辑器都很庞大,甚至只有控制台编辑器.任何简单的控制台编辑器源代码供参考?
我有一个关于getlogin()函数()的问题.我试图使用此功能从c程序中获取我的帐户的登录名.但该函数返回NULL.使用perror显示错误是"没有这样的文件或目录".
我没有得到什么问题.有没有办法在程序中获取用户登录名.
这是一个示例代码:
#include <stdio.h>
#include <unistd.h>
int main()
{
char *name;
name = getlogin();
perror("getlogin() error");
//printf("This is the login info: %s\n", name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出: getlogin() error: No such file or directory
请告诉我如何做到这一点.
谢谢.
我一步一步地使用汇编语言来学习linux上的汇编语言编程.我最近买了一台Mac int 0x80似乎无法正常工作(非法指令).
所以只是想知道是否有一个很好的参考书(书/网页),它给出了标准的unix程序集和darwin程序集的差异.
我刚刚开始使用kate编辑器(使用vim)进行c dev.我和vim使用了很多ctags.所以我想和凯特编辑一样.我在插件列表中启用了Ctags插件.它生成标签文件(.ctagsdb),但是当我想要查找标签时,它不会在"标签"选项卡中加载标签我必须手动输入LookUP字段才能显示标签.它不会填充标签.我甚至无法使用CTags菜单项.
有人能告诉我如何让CTags工作.或者如果有更好的插件来执行此操作.或者这是"正常"工作的方式.
谢谢.
我正在尝试更改Emacs中的键映射(与cscope一起使用).Cscope有绑定之类的
"C-c s s", "C-c s g", "C-c s G" ... etc
Run Code Online (Sandbox Code Playgroud)
所以我正在尝试将地图更改为 C-\ s, C-\ g, C-\ G ... etc
我试过用
(define-key global-map "\C-\\-s" 'cscope-find-this-symbol)
Run Code Online (Sandbox Code Playgroud)
它抱怨说:
error: Key sequence C-\ - a starts with non-prefix key C-\
Run Code Online (Sandbox Code Playgroud)
我该如何纠正这个问题.我是Emacs和Elisp的新手.我尝试使用Emacs Wiki中建议的define-prefix-command函数.但它没有帮助可能是我没有正确使用它.有人可以让我知道任何可以帮助我做出这种改变的资源.一个示例代码段也会有很大帮助.
谢谢.
我只是想了解gdb(或任何其他调试器)如何修改另一个进程的地址空间中的内存?
我们有一个正在运行的过程,我们附加到它
连接
pid
从这里开始,我们可以修改"附加进程"地址空间中的内存(变量).这怎么可能.什么阻止任何其他进程(不是调试器)做同样的事情.OS是否提供特殊功能doors,调试器可以使用它来查看/修改不同进程的地址空间?
或者我错了.在附加之后,进程是在调试器的上下文中运行的吗?如果是这样,这种情况的变化是如何发生的?如果发生这种情况,我可以假设这将是写入的副本吗?如果是这样,调试器将具有与修改数据不同的内存.但是一旦我们从gdb修改了一些内存并从进程中分离出来,该进程将继续查看修改后的数据....这是否意味着gdb可以访问此运行进程的地址范围?
任何指示理解这一点将不胜感激.我可以看一下gdb的代码,但是代码很大,不知道从哪里开始.
谢谢.