format-specifiers相关内容
当您使用 TCHAR 支持在 Windows 上构建应用程序时,_tprintf() 中的 %s 表示 char *> 字符串用于 Ansi 构建,wchar_t * 用于 Unicode 构建,而 %S 表示相反. 但是是否有任何格式说明符总是表示 char * 字符串,无论它是 Ansi 还是 Unicode 版本?由于即使在 Windows 上,UTF-16 也没有真正用于文件或网络,
..
我已经尝试过 scanf("%u",&number) 并且我输入了负数问题是当我 printf("%d",number) 我得到负数.我认为这会阻止我阅读负数.scanf("%d",&number) 和 scanf("%u",&number) 真的是一回事吗?还是只是为了便于阅读. 我是否在做一些称为未定义行为的事情? 编辑: 从 维基百科我读到: %u : 扫描十进制无符
..
由于搜索 printf() 的大量结果,我只发现了非常不相关的问题. 为什么 uint8_t 不指定自己的格式字符串,而其他任何类型都指定? 据我了解printf(),它必须知道提供的参数的长度才能解析变量参数列表. 由于 uint8_t 和 uint16_t 使用相同的格式说明符 %u,printf() 怎么知道"要处理多少字节?或者在提供 uint8_t 时是否涉及到 uin
..
您可以使用 printf 字段宽度说明符截断字符串: printf("%.5s", "abcdefgh");>abcde 不幸的是它不适用于数字(将 d 替换为 x 是相同的): printf("%2d", 1234);//为 34printf("%.2d", 1234);//为 34printf("%-2d", 1234);//为 12printf("%-.2d", 1234);//为 1
..
我有一个简单的程序: #include int main(){长 i = 16843009;printf ("%02x \n" ,i);} 我正在使用 %02x 格式说明符来获得 2 个字符输出,但是,我得到的输出是: 1010101 虽然我期待它是:01010101 . 解决方案 %02x 表示至少打印 2 位数字,如果少则在前面加上 0 .在您的情况下,它是 7 位数字,因此前
..
我当然知道它曾经输出带参数的指针. 我阅读了 Michael Howard 和 David LeBlanc 合着的Writing Secure Code一书. 书中的一个程序通过strcpy() 演示了堆栈溢出的工作原理 注意 printf() 不带参数. #include #include void foo(const char* 输入){字符缓冲区[10];//什么?没有提供
..
请解释输出.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
..
我知道当使用 %x 和 printf() 时,我们从堆栈中打印 4 个字节(一个 int 十六进制).但我只想打印 1 个字节.有没有办法做到这一点? 解决方案 假设:你想打印一个1字节宽度的变量的值,即char. 如果您有一个 char 变量,例如 char x = 0; 并且想要打印该值,请使用 %hhx 格式说明符使用 printf(). 类似的东西 printf("
..
我有以下代码块.最后一行用于生成用户输入的 X、Y 和 P 值.但是它只返回 (0,0,0) 而不是用户给定的值.我错过了什么? printf("机器人的初始X位置是多少?(cm)\n");scanf("%f",&X);printf("机器人的初始Y位置是多少?(cm)\n");scanf("%f",&Y);printf("机器人的初始角位置是多少?(度)\n");scanf("%f
..
printf 函数 int 到 %f ,浮到 %d 尝试实验 #includeint main(){国际我= 10;浮动 x=43.2892f;printf("i=%f x=%d \n",i,x);返回0;} 输出: i=43.289200 x=10 需要帮助理解为什么这些变量会互换? 解决方案 你正在做的事情会引起未定义的行为1,但是看着 结果程序集 在带有 System V A
..
在尝试将宽度说明符与 %@ 一起使用时,我发现了一些奇怪的东西.它们在 NSLog 中工作正常,但在 NSString stringWithFormat: 中无效. 示例: NSString *rightAligned = @"foo";NSString *leftAligned = @"1";NSLog(@"| %15@ | %-15@ |", rightAligned, leftAli
..
我在 C# 中使用指数格式来格式化十进制数.例如如果数字是 0.0001234567 用 格式化 (0.0000123456).ToString("E4"); 演出 1.2345E-004 如何从指数中删除前导零,使其显示如下? 1.2345E-4 解决方案 假设你需要总是显示小数点后 4 位数字,试试 "0.0000E+0" 所以它会显示 (0.0000123456).
..
我正在阅读一个 HTML 页面并尝试检索其中的特定字符串. 我有以下代码: std::string str = test.GetString();//someString (我检查过的字符串,它基本上是一个 html 页面)std::smatch 匹配;std::regex re("0x(\\d|[A-Z]).*0000");//我要搜索的模式if (std::regex_search(
..
我正在尝试使用 fscanf 读取数据,部分输入是浮点数,后跟字母'e',例如 41.72过去.在为 fscanf 编写strng时,我尝试使用“%felapsed" ,但这是行不通的,因为%fe 是它自己的格式说明符.我将如何使用 fscanf 来阅读此内容? 编辑:这是代码: #include#include#include
..
编辑:对于我的班级,我必须使用 scanf .因此,推荐其他输入方式不是我正在寻找的解决方案(如果有涉及scanf的解决方案). 如果我正在阅读用户输入的小项目(例如游戏).可以说我问您想玩吗?这将接受 yes 或 no 答案.所以我写了一些像这样的简单代码: #includeint main(无效){字符字符串[3];//"yes"的最大字母数.printf(“你想
..
#includeint main(){unsigned long long int num = 285212672;//FYI:适合29位int normalInt = 5;printf(“我的数字是%d字节宽,其值是%ul.正常数字是%d.\ n",sizeof(num),num,normalInt);返回0;} 输出: 我的数字是8个字节宽,其值为285212672
..
此代码的输出打印为“成功". printf("%m\n"); 解决方案 m转换说明符不是C,而是对printf的GNU扩展: 来自GNU文档: http://www.gnu.org/软件/libc/manual/html_node/Other-Output-Conversions.html “%m"转换会打印与errno中的错误代码相对应的字符串.请参阅错误消息.因此
..
如何显示类似double的 5000683 不是C中的 5.000683e6 ? 我尝试了%d ,%g 和%f ,但无济于事。 解决方案 看起来%f 可以正常工作: #include int main() { double d = 5000683; printf(“%f\n”,d); printf(“
..
当我在CodeBlocks中使用说明符F时,为什么编译器给我错误“格式的参数过多”? #include int main() { float x = 3.14159; printf(“%f\n”,x); printf(“%F\n”,x); 返回0; } 错误: 错误:格式为[-Werror = format =]
..
我制作了一个非常简单的程序来打印两个变量的地址。 #include int main() { int a,b; printf(“%u\n%u”,& a,&b;); 返回0; } 但是,Clang-3.7编译器给出警告: warning:format指定类型'unsigned int',但参数类型为'int *'[-
..