Tag: 格式说明符

%ul和%lu C格式说明符之间有什么区别?

在“C Primer Plus”的示例中,作者使用%ul格式说明符(在scanf和printf中)用于unsigned long 。 当我尝试概括问题时,似乎%ul在我的计算机中出错了。 但使用%lu解决了这个问题。 实际上,我不想关注问题和代码行,而是想知道%ul和%lu之间的区别。 也许我可以弄清楚什么是错的。 搜索并没有给我一些有用的东西(除了“它们是不同的”)。 任何解释或链接/参考表示赞赏。

没有参数的`printf(“%p”)`的含义是什么?

我当然知道它用于输出带参数的指针。 我读过迈克尔霍华德和大卫勒布朗的书“ 编写安全代码” 。 书中的一个程序演示了strcpy()如何处理堆栈溢出 注意没有参数的printf() 。 #include #include void foo(const char* input) { char buf[10]; //What? No extra arguments supplied to printf? //It’s a cheap trick to view the stack 😎 //We’ll see this trick again when we look at format strings. printf(“My stack looks like:\n%p\n%p\n%p\n%p\n%p\n% p\n\n”); //Pass the user input straight to secure […]

printf的参数数量错误会导致奇怪的结果

#include int main() { int i=10,j=20; printf(“%d%d%d”,i,j); printf(“%d”,i,j); return 0; } 使用Turbo C编译器,输出如下: 10 10 garbageValue 20 有人可以解释为什么会这样吗?

C中的动态浮点格式说明符

有没有办法让用户输入浮点格式说明符? 例如,如果我打印这个。 float c = 15.0123 printf(“%.2f”, c); // outputs: 15.01 如何为变量分配小数位数? 喜欢: int n = 3; float c = 15.0123 printf(“%.(%i)f”, n, c); // outputs: 15.012

为什么转换规范%lf对于printf中的Double不起作用

我正在编写一个非常小的代码,只需scanf和printf 。 我正在读取双倍值并打印它。 转换规范%lf可以正常读取double值。 但是,它不适用于printf。 当我尝试打印该值时,我得到的输出为0.000000 double fag; scanf(“%lf”, &fag); printf(“%lf”, fag); 但是,如果我在printf中使用%f它可以正常工作。

%p c中的格式说明符

说明符%p和%Fp如何在以下代码中工作? void main() { int i=85; printf(“%p %Fp”,i,i); getch(); } 我得到的o / p为0000000000000055 0000000000000055

scanf格式说明符中的星号是什么意思?

所以我偶然发现了这段代码,我无法弄清楚它的用途是什么,或者它是如何工作的: int word_count; scanf(“%d%*c”, &word_count); 我的第一个想法是%*d引用了char指针或禁止word_count取得char变量。 有人可以对此有所了解吗?

在scanf中使用的目的是什么?

我遇到了一些代码,并想知道最初的开发人员是做什么的。 以下是使用此模式的简化程序: #include int main() { char title[80] = “mytitle”; char title2[80] = “mayataiatale”; char mystring[80]; /* hugh ? */ sscanf(title,”%[^a]”,mystring); printf(“%s\n”,mystring); /* Output is “mytitle” */ /* hugh ? */ sscanf(title2,”%[^a]”,mystring); /* Output is “m” */ printf(“%s\n”,mystring); return 0; } scanf的手册页有相关信息,但我无法阅读它。 使用这种表示法的目的是什么? 它想要完成什么?

scanf中的格式说明符,用于C中的bool数据类型

我在C std99中使用bool数据类型,其定义在中定义。 现在我希望用户给我输入。 我必须在scanf中使用什么格式说明符来从用户输入1字节的布尔值,然后在我的程序中操作它。

为什么不是新的(特定于位宽)printf()格式选项字符串作为C99的一部分?

在研究如何在C中执行跨平台printf()格式字符串时(也就是考虑到我希望每个整数参数对printf()的位数应该是)我在printf()上浏览维基百科文章的这一部分printf() 。 本文讨论了可以传递给printf()格式字符串的非标准选项,例如(似乎是特定于Microsoft的扩展名): printf(“%I32d\n”, my32bitInt); 它接着说: ISO C99包括inttypes.h头文件,其中包含许多用于独立于平台的printf编码的宏。 …然后列出一组可在所述标题中找到的宏。 查看头文件,使用它们我必须写: printf(“%”PRId32″\n”, my32bitInt); 我的问题是:我错过了什么吗? 这真的是标准的C99方式吗? 如果是这样,为什么? (虽然我从未见过以这种方式使用格式字符串的代码并不感到惊讶,因为它看起来很麻烦……)