码:
printfn "%10s" "abc"
printfn "%-10s" "abc"
printfn "%10d" 123
printfn "%-10d" 123
printfn "%10c" 'a'
printfn "%-10c" 'a'
Run Code Online (Sandbox Code Playgroud)
输出:
abc
abc
123
123
a
a
Run Code Online (Sandbox Code Playgroud)
所以正确的对齐%c并不像我预期的那样有效......
F# 2.0 build 4.0.30319.1
即可以printf告诉它在小数点之前忽略零?
只需在VC2008中构建并运行它:
struct A
{
int a;
int b;
int c;
};
A a = { 10, 20, 30 };
printf("%d %d %d\n", a);
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?
10 20 30
Run Code Online (Sandbox Code Playgroud)
我想投!但它不起作用:
struct A
{
int a;
int b;
int c;
operator int()
{
return a + b + c;
}
};
A a = { 10, 20, 30 };
printf("%d\n", a);
Run Code Online (Sandbox Code Playgroud)
仅输出:
10
Run Code Online (Sandbox Code Playgroud)
我需要自动转换模板实用程序.这是:https://code.google.com/p/boolib/source/browse/boolib/crypt/ShakedValue.h 它应该隐藏在内存中,任何hack-programms(ArtMoney)都找不到值.
还有一个技巧:打印struct/class的私有成员
出于这个问题的目的,我没有能力使用printf设施(不幸的是,我无法告诉你原因,但我们现在只是假设我知道我在做什么).
对于IEEE754单精度数,您有以下位:
SEEE EEEE EFFF FFFF FFFF FFFF FFFF FFFF
Run Code Online (Sandbox Code Playgroud)
S符号在哪里,E是指数,F是分数.
对于所有情况,打印符号都相对容易,因为捕获所有特殊情况,如NaN(E == 0xff, F != 0),Inf(E == 0xff, F == 0)和0(E == 0, F == 0,因为在这种情况下不使用指数偏差,所以认为是特殊情况).
我有两个问题.
第一个是如何最好地将非规范化数字(where E == 0, F != 0)转换为规范化数字(where 1 <= E <= 0xfe)?我怀疑这对于简化下一个问题的答案是必要的(但我可能是错的,所以随时教育我).
第二个问题是如何打印标准化数字.我希望能够以两种方式打印它们,指数式-3.74195E3和非指数型3741.95.虽然,只要看看这两个并排,通过移动小数点就可以很容易地将前者转变为后者.所以我们只关注指数形式.
我对我很久以前用于打印PI的算法进行了模糊的回忆,其中你使用了一个不断减少的公式,并对可能性保持上限和下限,在两个限制达成一致时输出一个数字,并通过因子10(因此,当上限和下限为
3.2364和时3.1234,您可以输出3并在计算中进行调整).但是自从我这么做以后已经很长时间了,所以我甚至都不知道这是否适合采取这种做法.这么看来,因为每个比特的值是一半前一比特的通过小数部分移动时(
1/2, …
很抱歉让每个人都讨厌,但这给我带来了一些痛苦.这是代码:
char buf[500];
sprintf(buf,"D:\\Important\\Calibration\\Results\\model_%i.xml",mEstimatingModelID);
Run Code Online (Sandbox Code Playgroud)
mEstimatingModelID是一个整数,当前保持值为0.
很简单,但调试显示这种情况正在发生:
0x0795f630 "n\Results\model_0.xml"
Run Code Online (Sandbox Code Playgroud)
即它缺少字符串的开头.
有任何想法吗?这很简单,但我无法弄清楚.
谢谢!
尝试打印对象时,如下所示:
print "$response{_content} \n";
printf OUTPUT "$response{_content} \n";
Run Code Online (Sandbox Code Playgroud)
printf语句生成错误"尝试修改只读值"
这是一个间歇性的错误.只会偶尔发生一次,但这个程序需要100%可靠.宕.
它可以打印到STDOUT.
我究竟做错了什么?arrgh!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
int main(int argc, char * argv[])
{
char *arr[] = { "ab", "cd", "ef" };
char **ptr, **p, *str;
int num = 3;
int size = 0;
ptr = calloc(num, 4);
p = ptr;
for (; num > 0; num--)
size += strlen(*(p++) = arr[num - 1]);
str = calloc(1, ++size);
sprintf(str, "%s%s%s", ptr[0], ptr[1], ptr[2]);
printf("%s\n", str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:"efcdab"如预期的那样.
现在,如果参数计数sprintf为预定且已知,则这一切都很好并且是合适的.但是,如果参数count是variable(ptr[any]),那么我想要实现的是构建字符串的一种优雅方式.
第一个问题:需要传递给的第二个参数sprintf是 …
因为我想跟踪一些变量以便看到它们如何变化,我想创建一个函数,它接收一个格式字符串,具体取决于变量的类型和指向值的指针.我希望,在格式字符串的帮助下,printf将正确地确定值.实际上它有效,但有一个例外 - 浮点值无法正确打印.
这是我的代码:
#include <stdio.h>
void pprint (char* fmtstr, void* p)
{
printf(fmtstr,*(long double *)p);
}
int main (int argc, char **argv)
{
char cval = 64;
int ival = -534;
unsigned int iuval = 535;
float fval = 534.64;
double dval = 53432.1;
long double ldval = 534321234.134567;
long long lval = -654321;
unsigned long long luval = 7654321;
pprint ("char: %hhd\n",&cval);
pprint ("int: %d\n",&ival);
pprint ("uint: %u\n",&iuval);
pprint ("float: %f\n",&fval);
pprint ("double: %f\n",&dval);
pprint ("long double: %Lf\n",&ldval); …Run Code Online (Sandbox Code Playgroud) 我对snprintf函数很困惑.首先,我没有在stdio.h下的turbo C版本编译器中找到函数snprintf.其次在GNU编译器中,当缓冲区大小小于格式化字符串时,snprintf返回-1,尽管它应该返回已经存在的字符数如果缓冲区大小足够大则打印.我有以下来源:
#include<stdio.h>
int main()
{
char str[100];
int numchar = snprintf(str,2,"ello jdj");
printf("%d\n",numchar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据我所知的snprintf到目前为止,此代码应该输出8.但它在我的GNU编译器中返回-1.背后有什么事实?
在下面的程序中,我希望在输入一个单词并按下回车键之后,我应该立即看到该消息printf.但是,直到我输入其他随机单词才会发生.这是为什么?
#include <cstdio>
#include <cstdlib>
using namespace std;
char tictac[17];
int main()
{
scanf("%s\n", tictac);
printf("%s\n", tictac);
return 0;
}
Run Code Online (Sandbox Code Playgroud)