小编yaa*_*ami的帖子

编写文本编辑器时保存数据的好方法

我打算在c中做一个文本编辑器.所以只想知道保存文本的数据结构是什么.我阅读使用链表是一种方法,但效率不高.请指出一些参考资料,我可以很好地了解需要使用的内容.我打算使用ncurses库来获取用户输入和捕获键和UI.

使用现有编辑器的源代码有点过于复杂,所有文本编辑器都很庞大,甚至只有控制台编辑器.任何简单的控制台编辑器源代码供参考?

c programming-languages data-structures

11
推荐指数
1
解决办法
1372
查看次数

getlogin()c函数返回NULL并错误"没有这样的文件或目录"

我有一个关于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

请告诉我如何做到这一点.

谢谢.

c programming-languages

10
推荐指数
1
解决办法
9453
查看次数

os x中的汇编语言

我一步一步地使用汇编语言来学习linux上的汇编语言编程.我最近买了一台Mac int 0x80似乎无法正常工作(非法指令).

所以只是想知道是否有一个很好的参考书(书/网页),它给出了标准的unix程序集和darwin程序集的差异.

macos assembly

7
推荐指数
1
解决办法
2123
查看次数

使用kate编辑器为c dev(使用ctags插件)

我刚刚开始使用kate编辑器(使用vim)进行c dev.我和vim使用了很多ctags.所以我想和凯特编辑一样.我在插件列表中启用了Ctags插件.它生成标签文件(.ctagsdb),但是当我想要查找标签时,它不会在"标签"选项卡中加载标签我必须手动输入LookUP字段才能显示标签.它不会填充标签.我甚至无法使用CTags菜单项.

有人能告诉我如何让CTags工作.或者如果有更好的插件来执行此操作.或者这是"正常"工作的方式.

谢谢.

c ctags kate

6
推荐指数
2
解决办法
3993
查看次数

更改Emacs键映射(从Cc s到C- \)

我正在尝试更改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函数.但它没有帮助可能是我没有正确使用它.有人可以让我知道任何可以帮助我做出这种改变的资源.一个示例代码段也会有很大帮助.

谢谢.

emacs

5
推荐指数
1
解决办法
1508
查看次数

gdb在另一个进程的上下文中运行?

我只是想了解gdb(或任何其他调试器)如何修改另一个进程的地址空间中的内存?

我们有一个正在运行的过程,我们附加到它

连接 pid

从这里开始,我们可以修改"附加进程"地址空间中的内存(变量).这怎么可能.什么阻止任何其他进程(不是调试器)做同样的事情.OS是否提供特殊功能doors,调试器可以使用它来查看/修改不同进程的地址空间?

或者我错了.在附加之后,进程是在调试器的上下文中运行的吗?如果是这样,这种情况的变化是如何发生的?如果发生这种情况,我可以假设这将是写入的副本吗?如果是这样,调试器将具有与修改数据不同的内存.但是一旦我们从gdb修改了一些内存并从进程中分离出来,该进程将继续查看修改后的数据....这是否意味着gdb可以访问此运行进程的地址范围?

任何指示理解这一点将不胜感激.我可以看一下gdb的代码,但是代码很大,不知道从哪里开始.

谢谢.

linux debugging gdb

4
推荐指数
1
解决办法
265
查看次数