Tag: printf

用ncurses处理转义序列? printf是否处理转义序列?

我的程序从网络读取一些文本数据,如: Hello \033[1;34mworld\033[0m and bla bla bla!!!\n” 。当程序使用prinf输出此字符串时,单词”world“为蓝色。但是当我使用带有wprintw或addch的ncurses接口时,我看到带有转义序列的原始字符串。这是否意味着printf处理转义序列与否?使用ncurses处理转义序列的最佳方法是什么?

如何打印最大可能的浮点数并在C中加倍?

对于以下代码, #include #include #include int main(void) { printf(“double max = %??\n”, DBL_MAX); printf(“double min = %??\n”, DBL_MIN); printf(“double epsilon = %??\n”, DBL_EPSILON); printf(“float epsilon = %??\n”, FLT_EPSILON); printf(“float max = %??\n”, FLT_MAX); printf(“float min = %??\n\n”, FLT_MIN); return 0; } 为了让printf将各种数量显示为适当大小的十进制数,我必须使用哪些说明符代替??

如何用printf打印1个字节?

我知道当使用%x和printf()我们从堆栈中打印4个字节(hex的int )。 但我想只打印1个字节。 有没有办法做到这一点 ?

printf和cast float参数

作为我的程序的一部分,我使用: int ret = vprintf (format, args); 我进入堆栈的args ,我不知道实际上是什么被推到了堆栈上。 格式是一个字符串,我可以阅读。 上述方法有效,直到我必须打印浮点数。 当我打印浮动时,我得到一些奇怪的数字…… 我检查了如果我调用float fArg = *(reinterpret_cast(args) – 然后打印fArg打印正确的值(当args仅由一个实际参数组成时我尝试过) 所以我可能需要”%…f”子格式的特殊行为 – 相应的(子)参数应该转换为float。 ( …符号表示在f之前可以添加精度,宽度等)我如何实现它?

\%和%%之间的差异

在阅读了一些K&R CI之后,看到printf可以“识别%%”,我测试了它并打印出“%”,然后我尝试了“\%”,它也打印了“%”。 那么,有什么区别吗? 编辑代码请求: #include int main() { printf(“%%\n”); printf(“\%\n”); return 0; } 输出: % % 使用-o使用GCC编译 GCC版本:gcc(SUSE Linux)4.8.1 20130909 [gcc-4_8-branch revision 202388]

在无限循环之前不会打印Print语句

在尝试调试一些C代码时,我注意到如果置于无限循环之前,printf()将不会执行。 有人知道为什么吗? 实际上它不是那么大的交易,但对于调试来说这是一场噩梦。 #include int main() { int data; printf(“This prints fine.\n”); printf(“Enter data: “); scanf(“%d”, &data); printf(“This should print but it doesn’t.\n”); while(1) { //Infinite Loop } return 0; }

printf参数相互影响

我有以下代码: double dtemp = (some value) printf(“\n***Hand washing: cost per kg/item: %.2f, cost: %.2f.\n”, 5, dtemp); 打印出来: ***洗手:每公斤/件的成本:0.00,成本:0.00。 当我将常量5更改为保持5的双变量时,它会打印(根据输入): ***洗手:每公斤/件的成本:5.00,成本:20.00。 为什么常数5会影响dtemp的评估? 我正在使用gcc 4.6.2(MinGW)并在TCC中测试它。

C – long double和printf问题

我是新的C程序员,我正在研究一个学校项目,我必须接近值或pi。 我的教授表示我们必须使用long double声明所有整数项。 控制台显示我询问用户在给定函数时接近pi的项数。 我输入1作为术语数,但代码返回-0.00000000而不是4.00000000。 #include #include long double approx1(int terms) { long double pi = 0; long double num = 4; long double denom = 1; int i; for(i=1; i 0) { pie = approx1(terms); printf(“%.8Lf\n”, pie); printf(“GG mate\n”); break; } else { printf(“Incorrect input, please enter a correct input\n”); scanf(“%d”, &terms); } } […]

printf支持MSP430微控制器

我正在使用不同的C编译器升级经过全面测试的德州仪器(TI)MSP430微控制器C程序,从Quadravox,AQ430开发工具改为VisualGDB C编译器。 该程序使用VisualGDB编译零错误和零警告。 中断服务程序,定时器,UART控制等等都似乎正在工作。 但是,sprintf的某些用途不起作用。 例如: unsigned int duration; float msec; msec = (float)duration; msec = msec / 125.0; sprintf(glb_response,”break: %3.1f msec”,msec); 返回: break: %3.1f msec 这是预期的: break: 12.5 msec 我已经了解了以下内容(来自维基百科): 编译器选项–printf_support = [full | 最小| nofloat]允许您使用较小的,function受限的printf / sprintf变体,并在构建时进行选择。 有效值为: full:支持所有格式说明符。 这是默认值。 nofloat:不包括对打印浮点值的支持。 支持除%f,%g,%G,%e和%E之外的所有格式说明符。 minimal:支持打印整数,字符或字符串值,不带宽度或精度标记。 具体而言,仅支持%%,%d,%o,%c,%s和%x格式说明符 我需要对printf的全力支持。 我知道我的产品上的MSP430将支持这一点,因为这个C程序已服务多年。 我的问题是我无法弄清楚1)如果VisualGDB有将printf支持设置为full的方法,2)如果是这样,在哪里设置它。 任何和所有的评论和答案将不胜感激。

从dirent struct打印off_t文件大小

我想要的是打印我正在使用的字节大小的文件 DIR *d; struct dirent *dir; d= opendir(absolute_path); while((dir= readdir(d))!=NULL){ printf(“%s\t %d\t %u\n”,dir->d_name,dir->d_type,(int long long )dir->d_off); } 打印类型为off_t的d_off是错误的。 对于323,388 bytes的文件,它打印1296623584 我认为铸造是问题所在。 我尝试了很多铸件,比如%d , %s , %u , %llu ……什么是合适的铸件? 编辑:用于查找filesize的正确函数是使用stat结构的lstat() 。