Articles of printf

关于LINUX中的分段错误

我正在LINUX里做一个开发SIC / XE汇编程序的作业。 当我编写代码时,我遇到了一些错误,但是我不知道为什么会发生这种情况。 你能为我解释为什么会出现这个问题吗? 下面的代码显示了带有标记的'test.asm'文件。 178 printf("token1: %s \t",token1); 179 printf("token2: %s \t",token2); 180 printf("token3: %s \t",token3); 181 printf("token4: %s \t",token4); 182 printf("ss\nss"); 据此,特别是“ss \ nss”声明,我预计打印结果如下。 sstoken1: LDT token2: LENGTH token3: (null) token4: (null) ss sstoken1: WLOOP token2: TD token3: OUTPUT token4: (null) ss ss 但是,当我运行这个程序到最后,我遇到了分段错误,遇到了奇怪的情况。 sstoken1: OUTPUT token2: BYTE token3: X'05' token4: (null) […]

更新/刷新terminal上显示的文本

我试图用C语言来创build一个人生游戏程序,但是我不是很熟悉更新terminal上显示的输出的过程。 所以,例如,我将有一个2d的char数组,其中每个元素将包含一个'#'或' – '。 我将这个数组打印到屏幕上,而不是每次出现状态变化时打印一个新的二维数组,我想用新的状态覆盖terminal中的旧数组。 我已经find了这样做的方法,但没有太多的运气。 我发现最接近printf函数(\ r)回车,但希望有人可以告诉我这样做的最好方法。 具体来说,我怎样才能在屏幕上打印一个二维数组,更改数组中的元素,并打印出旧的新数组,即覆盖它。

什么时候会使用.fini_array部分?

我正在遵循http://tinyhack.com/2014/03/12/implementing-a-web-server-in-a-single-printf-call/写一个只有printf()调用的Web服务器。 我正在遵循这篇文章的指导。 Howerver,我发现我的程序的可执行文件在objdump的帮助下不包含.fini_array部分。 注意到.fini_array是由Linux Standard Base Core Specification定义的。 我读过它,我很好奇.fini_array部分和.fini部分之间的关​​系,他们怎么可以一起工作? 似乎.fini_array是没有必要的。 所以当它被使用,我应该如何继续我的工作?

如何将javas“out.println”翻译为程序集? 不使用printf

public static void main(String[] args) { int a = 0; for (int i = 0; i < 20; i++) { if (i < 10) { a++; } else { a–; } } System.out.println(a); System.exit(0); } 这是我要翻译成汇编代码的代码。 我认为我做了一切除了system.out.println(a); 我已经尝试几乎所有的东西,各种input到sys_write调用。 我不允许使用print f,而应该使用mov命令。 这是我现在的代码: cr equ 13 ld equ 10 STDOUT equ 1 SYS_WRITE equ 4 section .bss […]

printf在awk中舍入

echo 2 9|awk '{printf("%.0f\n",$2/$1)}' 4 结果是4; 但, echo 2 3|awk '{printf("%.0f\n",$2/$1)}' 2 结果是2。 为什么? 谁能告诉我?

在Linux中为shm_open打印errno时发生分段错误

我在C语言中练习使用共享内存,下面是一个简单例子的代码: #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <errno.h> #define SIZE_OF_MEMORY sizeof(int) #define SHARED_MEMORY_NAME "GDM123456" int main() { int shm_fd = shm_open(SHARED_MEMORY_NAME, O_RDWR | O_CREAT | O_EXCL, 0777); if(shm_fd == -1) { printf("failed to open shared memory\n"); printf("shm_open error, errno(%d): %s\n", errno, strerror(errno)); […]

在八度,printf给出奇怪的错误

在GNU Octave中,我得到这个代码的错误。 A = cell(10,1); A{5,1} = "foobar"; outputFile = fopen("mytext.txt", "w"); printf(outputFile, "%s", A{5,1}); 我得到这个错误: error: printf: format TEMPLATE must be a string 此错误消息不是有帮助的,谷歌不知道这个错误是什么! 哪里不对?

printf(“%d”,i ++)与i ++之间有什么区别; 的printf(“%d”,i)的?

我在Linux学习fork(),两个执行结果不同的程序看起来和我完全一样: 第一个有“正常”的结果,父母和小孩子交替行事: 6 int main(void){ 7 int pid; 8 int i = 0; 9 pid = fork(); 10 if(pid != 0){ 11 while(1) 12 printf("a%d\n",i++); 13 } 14 15 else{ 16 while(1){ 17 printf("b%d\n",i++); 18 } 19 } 20 } $./test1.out “` “` b670071 a656327 b670072 a656328 b670073 a656329 b670074 a656330 b670075 a656331 b670076 a656332 […]

我正在C / Linux中实现printf函数

程序: #ifndef PRINTF_H #define PRINTF_H #include "my_put_char.h" int my_printf(char *str, …); #endif 这是我的函数的头文件。 #include <stdio.h> #include "my_put_char.h" void my_put_char(char c) { fwrite(&c, sizeof(char), 1, stdout); } 这是我的putchar实现(my_put_char.c)。 #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include "printf.h" int my_printf(char *str, …) { if(str == NULL) return 0; int i; char a; va_list print; va_start(print,str); for(i = 0; […]

Bash printf%q指令无效

我想在我的.bashrc文件中更改我的PS1。 我发现一个脚本使用printf和%q指令来转义字符: #!/bin/bash STR=$(printf "%q" "PS1=\u@\h:\w\$ ") sed -i '/PS1/c\'"$STR" ~/.bashrc 问题是我得到这个错误: script.sh: 2: printf: %q: invalid directive 任何想法 ? 也许换一种方式来逃避人物?