Tag: printf

简单使用sprintf – C.

我试图弄清楚为什么会出现更大的问题,使用较小的程序作为例子。 这个较小的程序不起作用,让我相信这是我对有缺陷的function的理解。 据我所知,下面的程序应该初始化一个最多30个字符的字符串,然后将数字“5”取为9个有效数字,并将其转换为该字符串。 然后程序应打印值“5.00000000”。 但是,程序打印值7.96788(…)。 为什么是这样? #include int main() { char word[30]; sprintf(word, “%.9g”, 5); printf(word); return 0; }

sprintf或printf的最小实现

我正在研究一种速度至关重要的嵌入式DSP,而且内存很短。 目前,sprintf使用我代码中任何函数的大部分资源。 我只用它来格式化一些简单的文本: %d, %e, %f, %s ,没有精确或奇异的操作。 如何实现更适合我的使用的基本sprintf或printf函数?

如何解释这个简单C代码的输出?

#include int main() { int i=10; printf(“%d”,printf(“%d”,i)); return(0); } Turbo C中的输出 102 我是初学者。 那你能解释一下这段代码的工作原理吗?

输出C字符串程序

#include int main() { char s[2]=”a”; s[1]=’b’;s[2]=’c’;s[3]=’d’;s[5]=’e’; printf(“%s $%c$”,s,s[4]); return 0; } 1.当我在C(gcc-4.7.2)中运行该程序时,由于缺少空字符(’\ 0’),我预期运行时错误。 2.如果程序仍然成功编译并执行,因为s [4]尚未初始化,我预计那个地方会有一些垃圾值。但这里我也错了。 上述程序的输出是:abcde $$两个$(dollor)之间没有字符表示printf跳过s [4]。 这是一个相同的ideone链接: http ://ideone.com/UUQxb2 解释这种行为的原因(输出)?

read()调用后printf打印垃圾。 偏移始终打印为0

#include #include #include #include #include int main() { int file; off_t offset; if((file=open(“testfile.txt”,O_RDONLY)) < -1) return 1; char buffer[19]; if(read(file,buffer,19) != 19) return 1; fprintf(stdout,"%s\n",buffer); if(offset = lseek(file,-19,SEEK_END) < 0) return 1; fprintf(stdout,"%jd\n",(intmax_t)offset); if(read(file,buffer,19) != 19) return 1; fprintf(stdout,"%s\n",buffer); return 0; } 输出如下: 这是一个测试文件 0 他是一个测试文件 testfile.txt: 这是一个测试文件测试SEEK_END的工作原理这是一个测试文件 我尝试了不同的偏移格式,例如%ld,%d,但输出仍然相同。 无法弄清楚为什么垃圾出现在第一行和最后一行的末尾。 请帮忙。

为什么printf输出double的随机值和int的0.000000?

我知道这是一个简单的问题,但是当我编码时它出现了,我想知道它现在是如何工作的。 所以,我的第一个问题是,当printf给出一个如下所示的整数,但期望%f浮点值时,为什么它总是输出0.000000? 我在Linux终端的GCC上运行它。 int main() { int a = 2, b = 5, result = 0; result = b/a*a; printf(“%f\n”, result); } //Above printf statement outputs 0.000000 every time. 然后当我使用下面的代码并在期望%i整数值时给printf一个double,输出总是随机/垃圾。 int main() { double a = 2, b = 5, result = 0; result = b/a*a; printf(“%i\n”, result); } //Above printf statement outputs random numbers […]

在Eclipse中使用fgets(char * c,int i,file * f)和printf()for C – CDT。 输出顺序不正确。

#include enum { max_string = 127 }; static char ch[max_string+1] = “”; int main(int argc, char ** argv){ printf(“Type a String: \n”); fgets(ch, max_string, stdin); printf(“the string is: %s”, ch); return 0; } 我使用了这段代码,控制台中的输出是 hello world Type a String: the string is: hello world ‘hello world’是我给出的输入。 我的问题是为什么在这种情况下不保留订单。 因为printf()应该在fgets()之前工作,但是在这里它不是这样的。 我在Code :: Blocks中使用相同的编译器进行了检查。 它按顺序工作。 但是在Eclipse-MARS CDT的情况下,我发现它是错误的。

printf / fprintf根据c99的最大尺寸

C99 标准说: 任何单次转换可以产生的字符数应至少为4095 这是否意味着最大尺寸是4095,如果是,为什么它说“至少”?

“printf”不立即打印字符串

可能重复: 除非换行符在格式字符串中,为什么printf在调用后不会刷新? (在C中) 我有这样的代码: printf(“Starting nets allocation…”); while(…) { …some operations… } puts(“DONE”); 代码应该立即打印字符串“Starting nets allocation …”然后,在循环之后,应该打印“DONE”。 相反,程序首先执行循环,然后打印字符串“Starting nets allocation … DONE”为什么会发生? 我该如何解决这个问题?

在C语言中,%s和%d在printf中的含义是什么?

我不明白%s和d%在这个C代码中做了什么: for (i=0;i<sizeof(code)/sizeof(char*); i++) { printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i])); str = code[i]; printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]); } 我是C语言的新手,我的背景是Java。 %s%d%s%d符号表示什么? 为什么会有这么多? 这里使用的逗号是连接而不是+ ?