我想知道如何在C中使用printf打印一定数量的空格 我正在考虑这样的事情,但是我的代码也没有在第一个printf语句之后打印,我的程序编译得非常精细。我猜我要打印N-1个空格但我不太清楚怎么办如此。
感谢。
#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;
}
输出应该是这样的:
1 6 11 16 21 26 31
| | | | | | |
答案 0 :(得分:32)
n
空格 printf
有一个很酷的宽度说明符格式,可让您传递int
来指定宽度。如果空格数n
大于零:
printf("%*c", n, ' ');
应该做的伎俩。我也可以通过以下方式为n
大于或等于零执行此操作:
printf("%*s", n, "");
我仍然不完全清楚你想要什么,但要生成你在帖子底部描述的确切模式,你可以这样做:
for (i=1; i<=31; i+=5)
printf("%3d ", i);
printf("\n");
for (i=1; i<=31; i+=5)
printf(" | ");
printf("\n");
输出:
1 6 11 16 21 26 31
| | | | | | |
答案 1 :(得分:0)
你的目标是:
使用printf
以指定的宽度开始打印
你可以像下面那样实现它:
printf("%*c\b",width,' ');
在打印实际内容之前添加上述内容,例如。在for-loop之前。
此处\b
将光标定位在当前位置之前一点,从而使输出看起来以特定宽度开始,在这种情况下为width
。