format-specifiers相关内容

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

所以我偶然发现了这段代码,但我无法弄清楚它的目的是什么,或者它是如何工作的: int word_count;scanf("%d%*c", &word_count); 我的第一个想法是 %*d 引用了一个 char 指针或禁止 word_count 获取 char变量. 有人可以解释一下吗? 解决方案 *c 意思是,一个字符会被读取但不会被赋值,例如对于输入“30a"它将 30 分 ..
发布时间:2022-01-12 20:30:43 其他开发

使用 %c 或 %s 扫描

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

%g printf 说明符究竟是什么意思?

%g 说明符的行为方式似乎与大多数来源记录的行为方式不同. 根据我发现的大多数来源,在使用 printf 说明符的多种语言中,%g 说明符应该等同于 %f 或 %e - 为提供的值产生较短的输出.例如,在撰写此问题时,cplusplus.com 说 g 说明符的意思是: 使用最短的表示:%e 或 %f PHP 手册说 意思是: g - %e 和 %f 的较短者. 这里 ..

为什么不推荐使用带有单个参数(没有转换说明符)的 printf ?

在我正在阅读的一本书中,写到带有单个参数(没有转换说明符)的 printf 已被弃用.建议替换 printf("Hello World!"); 与 puts("Hello World!"); 或 printf("%s", "Hello World!"); 谁能告诉我为什么 printf("Hello World!"); 是错误的?书中写道,它包含漏洞.这些漏洞是什么? 解决方案 ..
发布时间:2021-12-13 09:45:47 其他开发

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 C#/.NET

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 C/C++开发

如果我的电脑是 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 其他开发