截至目前,我正在使用下面的线来打印出点
fprintf( stdout, "%-40s[%d]", tag, data);
Run Code Online (Sandbox Code Playgroud)
我期待输出会像下面这样,
Number of cards..................................[500] Fixed prize amount [in whole dollars]............[10] Is this a high winner prize?.....................[yes]
如何使用fprintf/printf打印短划线或点?
我有一个像这样的功能
void printMe (void *i)
{
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
我想传递一个无效指针并将其打印到屏幕上.上面的例子很好,如果i是整数,浮点数或双精度数,但如果我是一个char则崩溃.C中没有像我通常在C++中使用的那样重载.所以问题是这样,我们可以在C中创建一个函数来打印它作为参数的元素,如果是的话,这是怎么可能的,因为它在这一刻完全无法实现.
我创建了一个管道,并使用dup2()将流1和2(stdout和stderr)覆盖到这些管道中.
现在我希望使用fprintf写入流1或2,但我的程序似乎没有在管道的另一端接收任何内容.我尝试过使用printf(),但我不确定这是默认写入stdout还是流1.如果它写入流1,我想它在我的代码更深处的问题.
基本上我问,给定一个表示流的int,我如何获得适合在fprintf()中使用的FILE*?
为什么我收到以下代码的以下警告:)
码:
_stprintf(m_szFileNamePath,_T("%s"),strFileName);
Run Code Online (Sandbox Code Playgroud)
警告C4996:'_ swprintf':swprintf已更改为符合ISO C标准,添加了额外的字符计数参数.要使用传统的Microsoft swprintf,请设置_CRT_NON_CONFORMING_SWPRINTFS.
我知道_strprintf是一个宏,如果定义_UNICODE将评估为_swprintf,否则它将是sprintf.
现在这是什么_swprintf.有一个函数swprintf,但为什么_stprintf评估为_swprintf而不是swprintf.
b/w _xxx和xxx有什么区别?
编辑:
好的,_stprintf的UNICODE版本有两个定义,其中一个包含在内?
tchar.h或strsafe.h中的那个?
我正在使用va_list来构造一个呈现的字符串.
void Text2D::SetText(const char *szText, ...)
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但现在用户可以在应用程序运行时更改语言.我需要重新生成所有文本字符串,并在初始化后重新缓存文本位图.我想存储va_list并在需要生成文本时使用它.
为了给你更多背景知识,这需要在我正在翻译的关键字符串中包含动态数据的情况下发生.
"Player Score:%d"
Run Code Online (Sandbox Code Playgroud)
这是我需要翻译的关键字符串.我希望保留va_list中提供的数字以供以后使用(在初始化文本的函数范围之外),以便在初始化后需要重新翻译.我希望保留一份va_list的副本,以便与vsnprintf一起使用.
我已经做了一些研究,并找到了一些方法.其中一些我质疑它是否是一种合适的方法(在稳定和便携方面).
我正在使用awkurldecode一些文字.
如果我将字符串编码到printf语句中,就像printf "%s", "\x3D"正确输出一样=.如果我将整个转义字符串作为变量,则相同.
但是,如果我只有,我3D怎么能追加\x所以printf会打印=而不是\x3D?
我正在使用busybox awk 1.4.2和ashshell.
我想使用F#的printfn函数打印%符号.在谷歌搜索格式语法之后,这应该可以解决问题:printfn "%%".显然不是...
F#交互输出:
> printfn "%%";;
%%
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)
奇怪的...
我使用F#3.1和.NET 4.5,F#交互式会话使用.NET 4.0.一样.
供参考:printfn "%"不编译(缺少格式说明符),printfn "%s" "%"是我目前的解决方法......
更新:
当我将目标F#运行时从3.1更改为3.0时,它可以正常工作.这是3.1运行时中的错误吗?
我想打印一个boolean值printf,但我不知道如何.我正在寻找的是像这个虚构的代码
boolean car = true;
System.out.printf("%b",car);
Run Code Online (Sandbox Code Playgroud)
预期产量应为:
true
Run Code Online (Sandbox Code Playgroud)
我该怎么办?或者还有其他方法可以获得预期的输出吗?
这是我的阵列:
$ ARRAY=(one two three)
Run Code Online (Sandbox Code Playgroud)
如何打印数组,以便输出如下:index i, element[i]使用我在下面使用的printfor for循环
1,one
2,two
3,three
Run Code Online (Sandbox Code Playgroud)
一些注意事项供我参考
1种打印阵列的方法:
$ printf "%s\n" "${ARRAY[*]}"
one two three
Run Code Online (Sandbox Code Playgroud)
2种打印阵列的方法
$ printf "%s\n" "${ARRAY[@]}"
one
two
three
Run Code Online (Sandbox Code Playgroud)
3种打印阵列的方法
$ for elem in "${ARRAY[@]}"; do echo "$elem"; done
one
two
three
Run Code Online (Sandbox Code Playgroud)
4种打印阵列的方法
$ for elem in "${ARRAY[*]}"; do echo "$elem"; done
one two three
Run Code Online (Sandbox Code Playgroud)
一种看待阵列的方式
$ declare -p ARRAY
declare -a ARRAY='([0]="one" [1]="two" [2]="three")'
Run Code Online (Sandbox Code Playgroud) 在某些平台上,int32_t(来自stdint.h)是long int,但在其他平台上,它可能是int.当我想使用时printf,我如何确定"%ld"或"%d"应该使用哪种格式?
或者,也许,我应该强制将其转换为如下所示:
int32_t m;
m = 3;
printf ("%ld\n", (long)m);
Run Code Online (Sandbox Code Playgroud)
但这种解决方案很乏味.有什么建议?