【发布时间】:2014-03-12 23:38:57
【问题描述】:
我在使用 printf 说明符时遇到了一点麻烦……所以在问你们之前,我几乎阅读了C++Reference page 上的所有内容,但无法解决问题,而且由于我是 c 的新手,我什至无法理解这个问题,这是最可能是语法错误,但我找不到它...
for(i = 1; i <= 10; i++) {
printf("\n%d.%s%n",i,names[i-1],offset);
printf("%*s%.2f TL",10-offset," ",prices[i-1]);
}
所以基本上我有这个代码来打印一个列表,我希望价格从同一列开始。 例如:
- 水 1.00
- oj 1.00
我的代码背后的逻辑(如果不明显,我不知道是不是)是:
- 打印 id 编号和名称,计算到目前为止我们写了多少个字符并将其分配给偏移量。
- 打印(价格表的起始列)-价格前的偏移空间
一旦我无法得到我想要的结果,我检查并发现所有名称的偏移量都是 3,但情况并非如此(并且在此过程之前没有为偏移量分配值)。
感谢您的任何帮助!
PS:这是一个练习代码,只是为了更好地有效地使用说明符。
编辑: 所以我这样做了:
for(i=1;i<=10;i++)
{
printf("%d.%s%n",i,names[i-1],&offset);
printf("%*s%.2f TL\n",10-offset," ",prices[i-1]);
}
但我得到的结果是巨大的空白黑色命令屏幕。
【问题讨论】:
-
printf 是 C,首选构造是 C++ 中的
cout << ...;。 -
我很困惑,是的,我正在研究 c,但由于 c++ 参考页面上有 c++ 参考指南,我认为可以在这里问它
-
@user3402183 肯定是。 printf 是完全有效的 C++。它在标准头文件
中,参见。 27.9.2 标准草案。 -
URW。顺便说一句,我不知道 %* 并且忘记了 %n。学到了一些东西:-)
-
嗯,一个巨大的黑色命令屏幕......所以我们处于软件开发过程的第 4 阶段(不编译 - 编译但不链接 - 编译,链接,但崩溃-- 编译、链接、运行,但不执行我想要的操作)。当我运行它时,您的代码打印得很好(并且是表格!),所以现在出现巨大黑屏的原因在其他地方。尝试在 main 中打印一些静态的第一件事......在循环中打印一些调试输出......类似的东西。