标签: printf

.NET中的printf格式

我在托管的C#代码中有一个string format和IEnumerable< object > parameters(盒装值的集合).

format- 类似printf的格式说明符(根据ANSI/ISO 9899-1990),
parameters- 需要处理的参数(参数)的集合format.

任务 - 如何从格式说明符和参数集合中获取最终格式化的字符串?(http://www.codeproject.com/KB/printing/PrintfImplementationinCS.aspx解决方案除外)

请不要回答"为什么你需要printf格式?使用String.Format"或类似的东西......不幸的是,我不能逃避我所拥有的...

c# printf

7
推荐指数
1
解决办法
4569
查看次数

为什么建议在打印前将指针强制转换为通用指针?

好的,我听说你应该把一个指针指向一个普通的指针,即void *在打印它之前,必须练习使用%p占位符而不是%d在printf打印它们的函数中.

我只是觉得可以在打印时防止截断大地址,或者是其他什么?但关键是如果你在一台64位指针和32位整数的机器上; 使用%p而不是%d将完成这项工作.

有人知道这种铸造技术有用的任何实际情况吗?

c printf pointers

7
推荐指数
1
解决办法
119
查看次数

2 ways of accessing value of an array of pointers in C

The first block

#include <stdio.h>

const int MAX = 3;

int main() {

    int  var[] = { 10, 100, 200 };
    int i, *ptr[MAX];

    for (i = 0; i < MAX; i++) {
        ptr[i] = &var[i]; /* assign the address of integer. */
    }

    for (i = 0; i < MAX; i++) {
        printf("Value of var[%d] = %d\n", i, *ptr[i]);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Easy to understand, since ptr is an array of int pointers. So when you need to …

c arrays printf pointers format-specifiers

7
推荐指数
1
解决办法
1万
查看次数

使用内置 printf 以毫秒或纳秒为单位打印当前时间

我们可以使用内置printf函数打印当前时间,而无需调用date像这样的外部命令,如下所示:

printf '%(%Y-%m-%d:%H:%M:%S)T %s\n' -1
# sample output: 2019-03-30:17:39:36,846
Run Code Online (Sandbox Code Playgroud)

我们如何让 printf 也打印毫秒或纳秒?在格式字符串中使用%3N或%N不起作用:

printf '%(%Y-%m-%d:%H:%M:%S,%3N)T %s\n' -1 # outputs 2019-03-30:17:38:16,%3N
printf '%(%Y-%m-%d:%H:%M:%S,%N)T %s\n' -1  # outputs 2019-03-30:17:38:16,%N
Run Code Online (Sandbox Code Playgroud)

但是, date 命令工作正常:

date +%Y-%m-%d:%H:%M:%S,%3N # gives 2019-03-30:17:39:36,846
date +%Y-%m-%d:%H:%M:%S,%N  # gives 2019-03-30:17:39:36,160643077
Run Code Online (Sandbox Code Playgroud)

这是在 Red Hat Linux 7.3 版上。

linux bash printf datetime

7
推荐指数
2
解决办法
3265
查看次数

printf 格式字符串最大宽度值(填充)%(??)d%n

我可以在%d格式说明符中输入的最大宽度值是多少?例如:

int c=0;   
printf("%1234567899d%n",0,&c);
printf("%d",c);
Run Code Online (Sandbox Code Playgroud)

当我使用大值的写入值c是0。这是为什么?

c printf

7
推荐指数
1
解决办法
443
查看次数

在 Windows 上挂在 printf 中

所以这是我的最小样本:

int main( int argc, char* argv[] )
{
  printf("First stuff\n");
}
Run Code Online (Sandbox Code Playgroud)

我的程序挂在 printf 上。我已经通过调试器深入研究了反汇编。执行进入 printf,进入call qword ptr [__imp___stdio_common_vfprintf (07FF67A6D73F0h)]

从这里开始,跳转/调用是未命名的。该代码挂call在一个显式地址上。这是有人以前见过的东西吗?我正在使用 MSVC 工具 v142、VS 2019、SDK 10.0.18362.0

我的程序运行良好,突然开始挂在 printfs 上。我以为我引入了某种内存损坏,直到我将 printf 移到程序的第一行并看到相同的结果。删除我的输出文件夹并重新编译没有效果。虽然看起来一些代码更改确实可以让我摆脱这种奇怪的模式,但它会再次随机发生。

此外,关闭 Visual Studio 并重新打开,然后重建似乎可以解决该问题。

c++ windows printf visual-c++

7
推荐指数
0
解决办法
536
查看次数

未解析的外部符号 __stdio_common_vswprintf

我正在编译使用 Microsoft Dmf 框架 (DmfK.lib) 的内核模式驱动程序

在上次 Visual Studio 更新之后,出现了一些奇怪的链接器错误:

EmulationTargetPDO.obj : error LNK2019: unresolved external symbol __stdio_common_vswprintf referenced in function _vsnwprintf_l
Utilities.lib(savedata.obj) : error LNK2001: unresolved external symbol __stdio_common_vswprintf
DmfK.lib(DmfUtility.obj) : error LNK2001: unresolved external symbol __stdio_common_vswprintf
EmulationTargetPDO.obj : error LNK2019: unresolved external symbol __stdio_common_vsprintf referenced in function _vsnprintf_l
DmfK.lib(DmfCore.obj) : error LNK2001: unresolved external symbol __stdio_common_vsprintf
DmfK.lib(Dmf_CrashDump.obj) : error LNK2019: unresolved external symbol __stdio_common_vsprintf_s referenced in function _vsprintf_s_l
Run Code Online (Sandbox Code Playgroud)

这是我使用的软件和套件版本(显示在 VS“关于”窗口中):

  • Microsoft Visual Studio Professional 2019 版本 16.10.0
  • Windows …

printf stdio wdk unresolved-external

7
推荐指数
1
解决办法
1436
查看次数

由于字符串的 printf 使用输入中的地址,为什么 printf 不只接受“argv”

int main(int argc, char **argv){
    printf("argv: %s\n",argv); // does not work and prints random stuff
    printf("*argv: %s\n",*argv); // works and prints ".a.out"

}
Run Code Online (Sandbox Code Playgroud)

我测试:

./a.out nop
Run Code Online (Sandbox Code Playgroud)

我的困惑是这样的:

第二行中的“argv”变量具有“./a.out”的第一个字符的地址。

第三行中的“*argv”变量是“./a.out”的第一个字符。

那么为什么printf("argv: %s\n",argv);只打印“./a.out”不起作用呢?

我知道这是错误的,但我不知道为什么。

在此输入图像描述

c arrays printf pointers argv

7
推荐指数
1
解决办法
74
查看次数

sprintf 格式参数“/tmp/%s-XXXXXX”中的 XXXXXX 是什么意思?

在下面的代码中,似乎 XXXXXX 要求生成随机字符来替换它。这里的XXXXXX是什么意思呢?这是 中的一些特殊保留符号吗sprintf?

sprintf(tempName, "/tmp/%s-XXXXXX", filename.c_str());
Run Code Online (Sandbox Code Playgroud)

c++ printf

7
推荐指数
1
解决办法
2万
查看次数

printf 缺少二进制格式说明符:`%b` 和 `%B`

我正在使用 Ubuntu 22.04 进行一些软件开发,并处理二进制数据。我最近发现了2.35 版本的公告glibc;它指出版本 2.35 合并了二进制转换格式说明符 %b和%B:

\n
\n
    \n
  • printf 系列函数现在支持以二进制形式输出\n整数的 %b 格式(如 ISO C2X 草案中所指定),以及 ISO C2X 草案推荐的该格式的 %B 变体。
  • \n
\n
\n

我已glibc按如下方式检查了我的版本,但我不确定这是获取此信息的权威方式:

\n
$ ldd --version\nldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35\n
Run Code Online (Sandbox Code Playgroud)\n

看来我可以使用二进制格式说明符%b和%B,但是......

\n

大约一个月前,我在这个 Ubuntu 上为一个微控制器项目安装了Raspberry Pi C SDK 。我使用了二进制格式说明符%b,%B如下printf所示:

\n
    printf("\\n  binary values stored in rcvdata[0]: %#b \\n", rcvdata[0]);\n    printf(" …
Run Code Online (Sandbox Code Playgroud)

c printf glibc type-conversion

7
推荐指数
1
解决办法
1645
查看次数