Mathias Brodala: (C) Überschüssiges Leerzeichen

Beitrag lesen

Hallo.

Begleitend zu unserem Programmierungs-Lehrfach gibt es mehrere Übungen, welche in den Übungsveranstaltungen oder auch privat absolviert werden können.

Hier nun einmal die Aufgabe und meine Lösung:

/*  
 * Aufgabe 1: Würfel  
 *  
 * Erstellen Sie ein Programm zur Berechnung von Eigenschaften eines Würfels,  
 * das bei gegebener (d.h. in Ihrem Fall einzugebender) Kantenlänge a  
 *   - den Flächenumfang (=6a*a),  
 *   - das Volumen (=a*a*a) und  
 *   - die Länge der Raumdiagonale (=a*sqrt(3))  
 * berechnet und ausgibt.  
 */  
  
#include <stdio.h>  
#include <math.h>  
#include <string.h>  
#include "../input1.h" // für input1F, gibt float-Wert zurück  
  
int main() {  
  
  int i = 0, s = 0;  
  float a = 0;  
  char f[1024];  
  typedef struct {  
    char *type;  
    int value;  
  } calc;  
  
  a = input1F("Kantenlänge des Würfels: ");  
  
  calc c[3]; // Array mit drei Elementen des Typs »calc«  
  
  c[0].type = "Flächenumfang";  
  c[0].value = 6 * a * a;  
  
  c[1].type = "Volumen";  
  c[1].value = a * a * a;  
  
  c[2].type = "Länge der Raumdiagonale";  
  c[2].value = a * sqrt(3);  
  
  int clength = sizeof(c) / sizeof(calc);  
  
  for (i = 0; i < clength; ++i) {  
  
    if (strlen(c[i].type) > s) {  
  
      s = strlen(c[i].type); // Maximale Auffüllungsbreite ermitteln  
    }  
  
  }  
  
  sprintf(f, "%%%ds: %%d\n", s); // Formatstring vorbereiten, z. B. »%24s: %d\n«  
  printf("\n");  
  
  for (i = 0; i < clength; ++i) {  
  
    printf(f, c[i].type, c[i].value);  
  }  
  
}

Einmal abgesehen davon, dass sicher einiges zu verbessern ist, gibt mir die Ausgabe Rätsel auf:

$ ./aufg1
Kantenlänge des Würfels: 4

Flächenumfang: 96
                 Volumen: 64
Länge der Raumdiagonale: 6

Hat jemand eine nachvollziehbare Erklärung für das zusätzliche Leerzeichen in der Zeile „Volumen“?

Einen schönen Sonntag noch.

Gruß, Mathias

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules