2016-06-26 9 views
0

Ich möchte eine dynamische Tabelle mit der Sprache c, die Werte aus einem Array von Struktur erhalten. Ich habe auf diese Weise versucht, den Tisch zu ziehen:Wie zeichne ich eine dynamische Tabelle in c

  printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"); 
      printf("º        EMPRUNTEURS        º\n"); 
      printf("º        _____________        º\n"); 
      printf("º                   º\n"); 
      printf("º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º\n"); 
      printf("º ³ Matricule  ³   Nom & Prenom  ³  Classe ³ º\n"); 
      printf("º ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ º\n"); 
      printf("º ³     ³       ³     ³ º\n"); 
      printf("º ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ º\n"); 
      printf("º ³     ³       ³     ³ º\n"); 
      printf("º ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ º\n"); 
      printf("º ³     ³       ³     ³ º\n"); 
      printf("º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º\n"); 
      printf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n"); 

Aber das Problem ist, wenn ich aus dem Array diese Tabelle füllen wollen, wie kann ich es tun das Design, ohne zu verlieren?

Antwort

1

Sie müssen den Einsatz von printf() ‚s Formatierungsangaben machen, und definieren Sie die optionale Breite und Genauigkeit der einzelnen Felder, die Sie drucken:

%[flags][width][.precision][length]specifier 

So Sie nicht "%d" oder "%s", die eine Variable erzeugen verwenden würde, Längenausgabe, aber "%11d", um 11 Ziffern zu erzeugen, oder "%-25.25s", um minimale und maximale 25 Zeichen zu verwenden (- bedeutet Linksbegrenzung). Beachten Sie, dass Sie nicht an die feste Größe gebunden sind: Sie könnten * verwenden, um Breite oder Genauigkeit als zusätzliches Argument anzugeben.

Hier ein Beispiel:

printf("+=================+============================+=================+\n"); 
printf("| Matricule  |   Nom & Prenom  |  Classe |\n"); 
printf("+=================+============================+=================+\n"); 
for (int i=0; i<MX; i++) { 
    printf("| %11d  | %-25.25s | %-*.*s |\n", mat[i],name[i],14,14,classe[i]); 
}   
printf("+=================+============================+=================+\n"); 

Online demo