web-dev-qa-db-fra.com

print nombre d'espaces en utilisant printf en C

Je me demandais comment faire pour imprimer un certain nombre d'espaces à l'aide de printf en C Je pensais à quelque chose comme ceci, mais mon code ne s'imprime pas après la première instruction printf, mon programme est parfaitement compilé. Je suppose que je dois imprimer des espaces N-1 mais je ne sais pas trop comment faire.

Merci.

#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;
}

la sortie devrait ressembler à ceci:

   1       6       11      16      21      26     31
   |       |       |       |       |       |       |  
14
user3977404

Impression d'espaces n

printf a un format de spécificateur de largeur cool qui vous permet de passer une int pour spécifier la largeur. Si le nombre d'espaces, n, est supérieur à zéro:

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

devrait faire l'affaire. Il me semble également que vous pourriez le faire pour n supérieur ou égal à zéro avec:

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

Impression du motif 1, 6, 11, ...

Je ne comprends toujours pas ce que vous voulez, mais pour générer le modèle exact que vous avez décrit au bas de votre message, vous pouvez le faire:

for (i=1; i<=31; i+=5)
    printf("%3d   ", i);
printf("\n");
for (i=1; i<=31; i+=5)
    printf("  |   ");
printf("\n");

Cela génère:

  1     6    11    16    21    26    31   
  |     |     |     |     |     |     |   
30
ldgabbay

Si votre objectif avait été:

Lancer l'impression à une largeur spécifiée à l'aide de printf

Vous pouvez le réaliser comme ci-dessous:

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

Ajoutez les éléments ci-dessus avant d’imprimer des éléments réels, par exemple. avant une boucle for.

Ici, le \b positionne le curseur un point avant la position actuelle, ce qui donne l'impression que la sortie commence à une largeur particulière, width dans ce cas.

0
sjsam