печать количества пробелов с помощью printf в C

мне было интересно, как я могу это сделать ,чтобы напечатать определенное количество пробелов с помощью printf в C Я думал что-то вроде этого,но и мой код не печатается после первого оператора 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)=%3dn",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
   |       |       |       |       |       |       |  

2 ответов


печати n помещения

printf имеет классный формат спецификатора ширины, который позволяет передать int, чтобы задать ширину. Если количество пробелов, n, больше нуля:

printf("%*c", n, ' ');

следует сделать трюк. Мне также приходит в голову, что вы могли бы сделать это для n больше или равно нулю с:

printf("%*s", n, "");

печать 1, 6, 11, ... шаблон

мне все еще не совсем ясно, чего вы хотите, но для генерации точного шаблон, который вы описали в нижней части своего поста, вы можете сделать следующее:

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   
  |     |     |     |     |     |     |   

Если бы вашей целью было:

начать печать на заданной ширине с помощью printf

вы можете достичь этого, как показано ниже:

printf("%*c\b",width,' ');

добавьте вышеуказанный материал перед печатью фактического материала, например. перед for-loop.

на \b позиционирует курсор на одну точку перед текущей позицией, тем самым делая вывод, как представляется, начать с определенной ширины,width в этом случае.