Tag: printf

printf输出错误的数字

int main() { double i=4; printf(“%d”,i); return 0; } 谁能告诉我为什么这个程序输出0?

%x和〜的重要性

int m=32 printf(“%x” , ~m); 这个语句的输出是ffdf而没有~ output是20 。 %x和~的意义是什么?

我可以用什么方法(使用stdio)打印垂直直方图

我正在做所有的K&R练习,最后我能够打印水平直方图。 它看起来很糟糕,但我会让你判断它。 我无法在其输入中垂直打印单词长度的直方图。 如何修改我的程序来执行此操作? 问题:如果输入中有单词,则编写程序以打印长度的直方图。 可以很容易地绘制水平条形图的直方图; 垂直方向更具挑战性。 histogram.c #include #define MAX 10 #define IN 1 #define OUT 0 int main() { int c, len, state; int nlength[MAX]; c = len = 0; state = 1; for(int i = 0; i < 10; ++i) nlength[i] = 0; while ((c = getchar()) != EOF) { ++len; if […]

使用printf(%x)为什么指针的值不同?

#include int main(void) { int *ptr; printf(“The Hex value of ptr is 0x%x”,ptr); printf(“The pointer value of ptr is %p”,ptr); } 输出有点不同,我不知道为什么 The Hex value of ptr is 0x24a77950 The pointer value of ptr is 0x7fff24a77950 它显示ptr的值是hex整数,但hex输出缺少部分7fff 。 这是printf格式问题还是别的什么?

sprintf%g说明符在点之后给出的位数太少

我正在尝试将浮点变量写入我的ini文件中,我遇到了格式说明符的问题。 我有一个浮动值,让它为101.9716。 现在我想将它写入我的ini文件,但问题是我有另一个浮点值,它具有较少的先决条件(例如15.85),并且该值正在同一循环中写入ini文件。 所以我这样做: sprintf(valLineY, “%g”, grade[i].yArr[j]); 我所有的其他变量都变成了很好的字符,如“20”(如果它是20.00000),“13.85”(如果它是13.850000),依此类推。 但由于某种原因,101.9716变为“101.972”。 你能否告诉我为什么会发生这种情况以及如何在不破坏我的意识形态的情况下使其成为“101.9716”(这是关于删除尾随的零和不必要的感知)。 谢谢你的帮助。

printf与scanf请求输入。 BST循环错误

我一直试图看看为什么printf在打印文件输入后没有打破循环。 .c文件是BST,我现在正在测试是否已经构建了一个树,但似乎无法退出printf循环。 我需要printf循环来获得代码的正确输出。 有关此错误发生原因的任何建议。 显示完整的代码和输出。 #include “bst.h” #include #include ///Author: Joe W //arbitrary list of temp nodes TreeNode *new_node, *root, *tmp, *parent; int elemArray[100], i1, i2, i0; /* Insert a new node into the tree by referencing the root and using recursion */ TreeNode* getN(int dataElem) { TreeNode* temp; temp = malloc(sizeof(TreeNode*)); temp-> left = […]

%dn是格式字符串吗?

我最近在代码中遇到了这一行 – fprintf(logfile,” |-IP Version : %dn”,(unsigned int)iph->version); 这里的“%dn”是格式字符串吗? 如果是这样,它意味着什么?

printf中的预增量和后增量

int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } 在上面的print语句中,预增量/后增量如何工作? 为什么回答4321 4321?

将Char *缓冲区转换为hex,以便在c 中打印

嗨我试图将char缓冲区中的值打印为hex值为(“0X%x”), char buffer[1024] printf(“recived (0x%x) from the client\n”,buffer); 但编译代码时有警告: server.c:105:5: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘char *’ [-Wformat] 那怎么解决这个问题????

printf返回一个字符串

是否有类似printf的函数可以返回字符串而不是打印它? 我有一个以某种颜色打印字符串的函数,但它必须是字符串文字,而不是接受像printf这样的变量。 // Function declaration (Assums YELLOW and NORMAL are the unix constants for terminal colors void pYellow(char *str) { printf(“%s%s%s”, YELLOW, str, NORMAL); } //Function call void pYellow(“This is a string”); 如果我想用变量打印颜色,它就不会起作用。 像pYellow(“Num: %d”, 42); 会出错,因为它的参数太多了。 做pYellow(printf(“String”)); 也不会工作。 TL:DR我想知道是否有一个printf方法返回一个字符串而不是打印它。