Tag: 低级

非常简单的加密程序错误

我正在创建一个程序,它将文件作为输入并输出每行的解密密码。 该文件包含三行加密密码。 我保证密码解密为4个字母的单词。 鉴于我已经创建了字母的char []。 我在使用LOW LEVEL IO逐行读取文件并将生成的密码放入新文件时遇到问题。 任何和所有的建议表示赞赏! 这是我到目前为止的代码: #include #include #include #include #include #include #include #define BUFFER_SIZE 1024 int main(void) { int f = open(“pass.txt”, O_RDONLY); if (f < 0) return 0; char buf[1024]; while (my_fgets(buf, sizeof(buf), f)) printf("%s\n", buf); close(f); const char *const pass = "$1$6gMKIopE$I.zkP2EvrXHDmApzYoV.B."; char *result; int ok; char guess[] […]

为什么函数调用而不是变量地址用于检测堆栈增长方向?

我读到了检测堆栈增长检测问题的不同响应,我理解,在现代架构中,堆栈可能会随机增长,可能会在堆外创建,依此类推。 但是,在这个经典的访谈问题中,我想了解为什么人们使用函数调用而不是在同一函数中比较2个局部变量。 我认为必须有一些特殊的理由这样做,但不是一个C /低级开发人员[Java :)],我只是在猜测。 这是我试过的代码: void sub (int *a) { int b; int c; printf (“a:%d\n”, a); printf (“b:%d\n”, &b); printf (“c:%d\n”, &c); if (&b > a) { printf (“Stack grows up.\n”); } else { printf (“Stack grows down.\n”); } } int main (void) { int a; int b; sub (&a); printf (“\nHere we […]

是否有任何用例依赖于两个分配的整数表示在C中是不同的?

例如,请考虑以下C代码段: void *p = malloc(1); void *q = malloc(1); bool question = (uintptr_t) p == (uintptr_t) q; 我希望每个人都希望question永远是假的。 (令人惊讶的是,C11标准并不要求它。对uintptr_t的唯一限制是例如((void *) ((uintptr_t) p)) == p 。有关详细信息,请参阅C11标准的7.20.1.4。) 我的问题是:是否有任何实际用例实际上依赖于保证question是错误的,或者更一般地说,两个分配的整数表示是不同的?

可以向文件写入少于1个字节

据我所知,C中的最小单位是一个byte 。 这种约束来自哪里? 中央处理器? 例如,如何将nibble或单个bit写入文件?

如何在Code :: Blocks中查看反汇编?

我读了这篇关于C / C ++的一些低级基础的文章 ,作者基本上是通过编译器生成的汇编代码逐行向我们展示的。 他正在使用VS 2010,但我没有,我使用Code :: Blocks。 如何查看那里的拆卸? 当我进入调试器,然后单击反汇编时,它会显示一个空白窗口… 这是我编译的C ++(。cpp)代码(整个代码): int main() { int x = 1; int y = 2; int z = 0; z = x + y; return 0; }

编译器编程:最基本的成分是什么?

我有兴趣编写一个非常简约的编译器。 我想写一小段软件(用C / C ++),它符合以下标准: ELF格式的输出(* nix) input是单个文本文件 类C语法和语法 没有链接器 没有预处理器 非常小(最大1-2 KLOC) 语言特色: 本机数据类型:char,int和float 数组(适用于所有本机数据类型) 变量 控制结构(if-else) function 循环(会很好) 简单代数(div,add,sub,mul,布尔表达式,位移等) 内联asm(用于系统调用) 谁能告诉我怎么开始? 我不知道编译器包含哪些部分(至少在某种意义上我不能直接启动)以及如何对它们进行编程。 谢谢你的想法。

是否有可用于替代脚本的低级语言?

我是一个“高级”脚本人。 我的所有代码都是基于类的PHP或JavaScript。 但是,我想知道是否有任何forms的有用的解释器项目用于“低级”编译语言,如C或C ++(奇怪的声音吧?)。 这一切都发生在我偶然发现http://g-wan.com/时,您可以将C代码设置为作为服务器脚本运行而着迷。 然而,该项目几乎没用,因为它由一个人运行并且是封闭源。 那么,是否有“低级”语言可以通过在运行时编译它们来使它们更容易运行。 或者这只是一个等待发生的严重事故,这解释了为什么这是我能找到的唯一项目呢? 能够为C脚本转储PHP / Ruby / Python将真正加速我们的网站。

缩小位图字体的算法

这是这个问题的后续行动。 我正在开发一个低级别的C应用程序,我必须在其中绘制文本。 我决定存储我想用作数组的字体(黑色和白色,每个char 128×256,也许),然后我用一些算法将它缩小到我需要的尺寸(作为灰度,所以我可以有一些原油字体平滑)。 注意:这是一个玩具项目,请忽略诸如在运行时进行计算之类的事情。 问题是, 哪种算法? 我2xSaI了2xSaI ,但它相当复杂。 我想要一些我可以阅读描述并自己编写代码的东西(我是一名初学者,并且已经用C / C ++编写了不到一年的时间)。 建议,有人吗? 谢谢你的时间! 编辑:请注意,输入为B&W,输出应平滑灰度

C低级标准输入接受文件名然后将文件内容打印到标准输出

我想通过stdin从用户获取文件名,用open()打开文件并将其分配给文件描述符,然后将该文件的内容打印到stdout。 这是我的代码,但它无法正常工作。 问题: printf(“输入文件名”); 声明永远不会出现 它从不打开文件; 相反,无论用户输入打印到屏幕上,然后打印“无此文件或目录”错误消息并退出程序 程序存在后,我看到在终端提示符前打印的“输入文件名” 码: { printf(“Enter the filename: “); read(STDIN_FILENO, userInput, sizeof(userInput)); if((input_file1 = open(userInput, O_RDONLY)) 0) { if((write(STDOUT_FILENO, buffer, n)) < 0) { perror("failed to write to standard-out"); close(input_file1); exit(1); } } } 安慰: machine{user1}168: ls // to show that the file exists a.out backup file1 machine{user1}170: ./a.out file1 […]

Windows系统中是否有未缓冲的I / O?

我想找到低级C / C ++ API,相当于linux系统中的“write”,没有缓冲区。 有吗? 缓存的I / O如fread,fwrite不是我想要的。