format-specifiers相关内容

printf 中 double 的正确格式说明符

printf 中 double 的正确格式说明符是什么?是 %f 还是 %lf?我相信它是 %f,但我不确定. 代码示例 #include int main(){双 d = 1.4;printf("%lf", d);//这是错误的吗?} 解决方案 "%f" 是(或至少一种)双精度型的正确格式.没有 float 的格式,因为如果您尝试将 float 传递给 printf,它会在print ..
发布时间:2021-12-02 00:04:14 其他开发

当我使用错误的格式说明符时会发生什么?

只是想知道当我在 C 中使用错误的格式说明符会发生什么? 例如: x = 'A';printf("%c\n", x);printf("%d\n", x);x = 65;printf("%c\n", x);printf("%d\n", x);x = 128;printf("%d\n", x); 解决方案 当我在 C 中使用错误的格式说明符时会发生什么? 一般来说,未定义的行为. ..
发布时间:2021-12-01 23:50:53 其他开发

用 %c 或 %s 扫描

我必须为大学做一个计划,在该计划中,我应该将一定数量的人区分喜欢和不喜欢某事的人.所以我这样做了: char like[100];printf("喜欢吗?Y 或 N \n");scanf ("%c", 喜欢); 程序已编译,但未按应有的方式运行.当被问到“喜欢?"时,用户无法写出“y 或 n" 所以我尝试了这个: char like[100];printf("喜欢吗?Y 或 N \ ..
发布时间:2021-11-18 03:16:00 其他开发

浮点定长数字格式化c#

我想在 C# 中按如下方式格式化浮点数,以便 C# 中浮点数的整个宽度是固定长度(python 等效格式说明符 6.2f)我不希望它用 0 填充左边但用空格填充 100.0090.457.230.00 到目前为止我尝试了什么 string.Format({0:###.##},100);string.Format({0:###.##},90.45);string.Format({0:###.# ..
发布时间:2021-08-31 18:38:03 其他开发

sscanf("0X80.9", "%f", &value) 将值设置为十六进制浮点数而不是浮点数

我有一些读取字母值对的代码.可以简化为: 浮点值 = 0.0;sscanf("0X80.9", "%f", &value); 在 Visual Studio 2013 中,值 = 0 在 Visual Studio 2015 及更高版本中,值 = 128.5625(即十六进制的 0x80 = 十进制的 128) 有人知道为什么会改变吗?更重要的是,有人知道如何让它像以前一样工作吗? ..
发布时间:2021-07-16 18:49:22 其他开发

在查找 %d 匹配项时,Scanf 函数是否会忽略 Enter 键?

我是 C 语言的新手,我正在 Kim N. King 的书上学习它.它说 scanf() 寻找忽略空格的数字模式,但我认为它也会跳过 Enter 键.而如果它寻找字符,它显然也需要空格. 因此在这个示例代码中我必须使用 getchar() 在第二个 scanf() 之前清除流,否则第二个将在不等待的情况下执行用户的输入. printf("请输入一个字符:");scanf("%c", &ch ..
发布时间:2021-07-16 18:48:50 其他开发

scanf - 阅读时限制小数位

我知道如何在 printf (%x.x ) 中打印值时限制小数和整数,在我的场景中,我想在从控制台本身读取时实现它. 那么有没有办法在使用 scanf 函数读取时限制浮点值中的小数位数? 我在下面试过,编译时没有显示任何错误,但总是得到值 0 float f1;..scanf("%.3f",&f1);printf("%3.3f\n",f1); 解决方案 如果你查看文档,它会说 ..
发布时间:2021-07-16 18:47:35 其他开发

hh 和 h 格式说明符需要什么?

在下面的代码中,mac_str 是字符指针,mac 是 uint8_t 数组: sscanf(mac_str,"%x:%x:%x:%x:%x:%x",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]); 当我尝试上面的代码时,它给了我一个警告: 警告:格式‘%x’需要‘unsigned int *’类型的参数,但参数8的类型为‘uint8_t ..
发布时间:2021-07-16 18:46:07 其他开发

在 scanf 中使用 [^ 符号的目的是什么?

我遇到了一些代码,想知道原始开发人员在做什么.以下是使用此模式的简化程序: #include int main() {字符标题[80] = "我的标题";char title2[80] = "mayataiatale";字符 mystring[80];/* 休?*/sscanf(title,"%[^a]",mystring);printf("%s\n",mystring);/* 输出是 "my ..
发布时间:2021-07-16 18:42:37 其他开发

scanf() 的宽度说明符 - 要使用的字符长度在编译时不固定,仅在运行时确定.怎么让它变呢?

我想将字段宽度说明符应用于 scanf() 操作以读取字符串,因为要明确指定要读取/使用的字符数量而不是使 scanf()-容易导致缓冲区溢出的操作.除了目标参数指向已经匹配的 char 数组,该数组与元素的大小完全相同,字段宽度的所需值必须是,对于 \0.这个char数组的大小也是在运行之前确定的. 现在的问题是最大字段宽度的值无法固定;它仅在运行时确定. 如何在运行时确定最大字段宽 ..
发布时间:2021-07-13 19:59:15 其他开发

如果我的电脑是 32 位系统,它有一个 32 位地址对吗?但是当我在 C 中打印任何内存地址时,为什么我会得到一个 <32 位的地址?

例如 printf("%u",&a); 给我输出 65524 这是一个 16 位地址. 解决方案 因为您使用了错误的格式说明符,该说明符会调用 未定义的行为. 要打印指针,您应该使用 %p 格式说明符并将参数转换为 void*.类似的东西 printf("%p",(void *)&a); 将完成这项工作. 也就是说,您应该首先了解虚拟内存的概念.> ..
发布时间:2021-06-21 19:04:35 其他开发

为什么 printf 中缺少的参数不会产生错误

在下面的代码中 - int main() {//你的代码放在这里int a=10,b=20,c=30;printf("%d %d %d\n",a,b,c);printf("%d %d %d %d %d %d\n",a,b,c);返回0;} 输出在各自的位置包含 10,20 和 30,但剩余的 %d 格式说明符输出垃圾值.如果我们没有指定所需的参数数量,为什么它不会给出错误?这有时有用吗? ..
发布时间:2021-06-21 19:03:29 其他开发

关于 C 中的 printf 格式字符串

我们来看看下面的程序: #include int main(){长 t =57 ;printf("[%+03ld]", t);} 它的输出: [+57] 我有点困惑:我告诉他用零填充输出到宽度 3 (03ld),但是似乎如果我强制输出在数字前放一个加号(+) 如果数字的长度已经是 2 位数字(如 57),则不会添加所需的零.对于小于 10 的数字,用 1 个零填充. 来自 http: ..
发布时间:2021-06-21 19:01:33 其他开发

是否有格式说明符始终表示带有 _tprintf 的字符字符串?

当您使用 TCHAR 支持在 Windows 上构建应用程序时,_tprintf() 中的 %s 表示 char *> 字符串用于 Ansi 构建,wchar_t * 用于 Unicode 构建,而 %S 表示相反. 但是是否有任何格式说明符总是表示 char * 字符串,无论它是 Ansi 还是 Unicode 版本?由于即使在 Windows 上,UTF-16 也没有真正用于文件或网络, ..
发布时间:2021-06-21 19:00:41 其他开发

scanf %u 负数?

我已经尝试过 scanf("%u",&number) 并且我输入了负数问题是当我 printf("%d",number) 我得到负数.我认为这会阻止我阅读负数.scanf("%d",&number) 和 scanf("%u",&number) 真的是一回事吗?还是只是为了便于阅读. 我是否在做一些称为未定义行为的事情? 编辑: 从 维基百科我读到: %u : 扫描十进制无符 ..
发布时间:2021-06-21 18:59:38 其他开发

为什么 uint8_t 和 uint16_t 的格式说明符相同 (%u)?

由于搜索 printf() 的大量结果,我只发现了非常不相关的问题. 为什么 uint8_t 不指定自己的格式字符串,而其他任何类型都指定? 据我了解printf(),它必须知道提供的参数的长度才能解析变量参数列表. 由于 uint8_t 和 uint16_t 使用相同的格式说明符 %u,printf() 怎么知道"要处理多少字节?或者在提供 uint8_t 时是否涉及到 uin ..
发布时间:2021-06-21 18:58:58 其他开发

指定数字的最大 printf 字段宽度(必要时截断)?

您可以使用 printf 字段宽度说明符截断字符串: printf("%.5s", "abcdefgh");>abcde 不幸的是它不适用于数字(将 d 替换为 x 是相同的): printf("%2d", 1234);//为 34printf("%.2d", 1234);//为 34printf("%-2d", 1234);//为 12printf("%-.2d", 1234);//为 1 ..
发布时间:2021-06-21 18:58:55 其他开发

格式说明符 %02x

我有一个简单的程序: #include int main(){长 i = 16843009;printf ("%02x \n" ,i);} 我正在使用 %02x 格式说明符来获得 2 个字符输出,但是,我得到的输出是: 1010101 虽然我期待它是:01010101 . 解决方案 %02x 表示至少打印 2 位数字,如果少则在前面加上 0 .在您的情况下,它是 7 位数字,因此前 ..
发布时间:2021-06-21 18:58:29 其他开发

没有参数的`printf("%p")`是什么意思

我当然知道它曾经输出带参数的指针. 我阅读了 Michael Howard 和 David LeBlanc 合着的Writing Secure Code一书. 书中的一个程序通过strcpy() 演示了堆栈溢出的工作原理 注意 printf() 不带参数. #include #include void foo(const char* 输入){字符缓冲区[10];//什么?没有提供 ..
发布时间:2021-06-21 18:56:59 其他开发

c中printf语句中的%.#s格式说明符

请解释输出.printf()中的%.#s是什么意思? #include#include int main(int argc,char*argv[]){字符 *A="你好";printf("%.#s %.2s\n",A,A);返回0;} 输出: #s HE 解决方案 这是未定义的行为.# 在printf 格式说明符中表示替代形式,但根据标准,# 仅与o 一起使用、a、A、x、X、e、E、f ..
发布时间:2021-06-21 18:56:54 其他开发