C语言 在 C 中使用 printf 打印空格数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25609437/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
print number of spaces using printf in C
提问by ldgabbay
I was wondering how can I do it ,to print certain number of spaces using printf in C I was thinking something like this,but also my code doesn't print after the first printf statement,my program compiles perfectly fine tho.I'm guessing I have to print N-1 spaces but I'm not quite sure how to do so.
我想知道我该怎么做,在 CI 中使用 printf 打印一定数量的空格是在想这样的事情,但我的代码在第一个 printf 语句之后也没有打印,我的程序编译得非常好。我猜我必须打印 N-1 个空格,但我不太确定该怎么做。
Thanks.
谢谢。
#include <stdio.h>
#include <limits.h>
#include <math.h>
int f(int);
int main(void){
int i, t, funval,tempL,tempH;
int a;
// Make sure to change low and high when testing your program
int low=-3, high=11;
for (t=low; t<=high;t++){
printf("f(%2d)=%3d\n",t,f(t));
}
printf("\n");
if(low <0){
tempL = low;
tempL *=-1;
char nums[low+high+1];
for(a=low; a <sizeof(nums)/sizeof(int);a+5){
printf("%d",a);
}
}
else{
char nums[low+high];
for(a=low; a <sizeof(nums)/sizeof(int);a+5){
printf("%d",a);
}
}
// Your code here...
return 0;
}
int f(int t){
// example 1
return (t*t-4*t+5);
// example 2
// return (-t*t+4*t-1);
// example 3
// return (sin(t)*10);
// example 4
// if (t>0)
// return t*2;
// else
// return t*8;
}
the output should be something like this:
输出应该是这样的:
1 6 11 16 21 26 31
| | | | | | |
回答by ldgabbay
Printing nspaces
印刷n空间
printfhas a cool width specifier format that lets you pass an intto specify the width. If the number of spaces, n, is greater than zero:
printf有一个很酷的宽度说明符格式,可让您通过int来指定宽度。如果空格数n, 大于零:
printf("%*c", n, ' ');
should do the trick. It also occurs to me you could do this for ngreater than or equal to zero with:
应该做的伎俩。我也想到你可以这样做n大于或等于零:
printf("%*s", n, "");
Printing 1, 6, 11, ... pattern
打印 1, 6, 11, ... 图案
It's still not fully clear to me what you want, but to generate the exact pattern you described at the bottom of your post, you could do this:
我仍然不完全清楚您想要什么,但要生成您在帖子底部描述的确切模式,您可以这样做:
for (i=1; i<=31; i+=5)
printf("%3d ", i);
printf("\n");
for (i=1; i<=31; i+=5)
printf(" | ");
printf("\n");
This outputs:
这输出:
1 6 11 16 21 26 31
| | | | | | |
回答by sjsam
Had your objective been :
你的目标是:
Start printing at a specified width using printf
使用 printf 以指定的宽度开始打印
You could achieve it like below :
你可以像下面那样实现它:
printf("%*c\b",width,' ');
Add the above stuff before printing actual stuff, eg. before a for-loop.
在打印实际内容之前添加上述内容,例如。在 for 循环之前。
Here the \bpositions the cursor one point before the current position thereby making the output appear to start at a particular width, widthin this case.
在这种\b情况下,此处将光标定位在当前位置之前一点,从而使输出看起来以特定宽度开始width。

