C Programming Input Output

Also, ich hab' da mal 'ne Meinung. Und die ist...naja, sagen wir mal, sie spaltet die Gemüter. Es geht um C. Ja, genau, DAS C. Und Input/Output. Hört sich schon spannend an, oder?
Ich behaupte mal ganz frech: C's Input/Output ist...charmant unhandlich. fprintf, fscanf, getchar, putchar. Klingt wie 'ne Liste von Zaubersprüchen aus 'nem alten Fantasy-Roman. "Ich beschwöre einen char aus dem Nichts! Abracadabra... getchar!"
Okay, okay, ich geb's zu. Es ist mächtig. Man kann damit wirklich alles machen. Von der Steuerung eines Toasters bis zur Simulation eines Schwarzen Lochs. Aber muss es denn SO kompliziert sein, 'ne einfache Zahl einzulesen?
Must Read
Da guckt man neidisch auf Sprachen wie Python. input(). Fertig. Da lacht das Programmiererherz. Aber bei C? Erstmal #include <stdio.h>, dann 'n Formatstring mit kryptischen Prozentzeichen, und dann hoffen, dass der User auch wirklich 'ne Zahl eingegeben hat. Sonst gibt's 'nen Crash. Super.
Versteht mich nicht falsch. Ich liebe C. Es ist wie 'n alter, knurriger Freund, der einem immer wieder auf die Nerven geht, aber ohne den man sich das Leben nicht vorstellen kann. Aber dieses Input/Output... Ich sag's ja nur. Ich finde, es könnte eleganter sein.

Der Formatstring-Fluch
Der Formatstring. Allein das Wort klingt schon bedrohlich. %d für Integer, %f für Float, %s für String... Und wehe, man vertippt sich! Dann hagelt es Fehlermeldungen, die einem das Mark in den Knochen gefrieren lassen.
Und dann die Sache mit den Adressen! Bei scanf muss man ja unbedingt das & vor die Variable setzen. Sonst schreibt man fröhlich in den Speicher, wo man gar nicht schreiben sollte. Autsch! Da hilft auch kein Pflaster mehr.
Ich hab' mal versucht, 'nen Namen mit scanf einzulesen. Mit Leerzeichen. Großer Fehler! scanf liest nur bis zum ersten Leerzeichen. "Hallo Welt!" wird dann zu "Hallo". Danke auch. Da muss man dann wieder irgendwelche komplizierten Tricks mit fgets und sscanf anwenden. Warum einfach, wenn's auch kompliziert geht?

Das ist halt C. Da weiß man, was man hat. Und meistens ist das 'ne Menge Arbeit.
Ich weiß, ich weiß. Kontrolle ist wichtig. C gibt einem die volle Kontrolle über alles. Auch über die allerkleinste Kleinigkeit. Aber manchmal wünschte ich mir, diese Kontrolle wäre...weniger kontrollierend. Weniger...überwältigend.
Die Tücken der Ausgabe
Auch die Ausgabe ist nicht ohne. printf ist zwar mächtig, aber auch hier lauert der Formatstring-Teufel. Und wehe, man will Gleitkommazahlen schön formatiert ausgeben! Da muss man erstmal 'n halbes Studium absolvieren, um zu verstehen, wie man die Anzahl der Nachkommastellen richtig einstellt.

Und dann die Sache mit den Zeilenumbrüchen! Vergisst man das \n, klebt der Output wie Pattex zusammen. Alles in einer Zeile. Unleserlich. Katastrophe.
Ich hab' mal versucht, 'ne Tabelle mit printf auszugeben. Das war...kein Spaß. Da hab' ich dann doch lieber Python benutzt. Sorry, C. Aber manchmal muss man einfach zugeben, dass andere es besser können.
Ich will C ja nicht schlechtreden. Es ist 'ne tolle Sprache. Aber dieses Input/Output... Da beiß ich mir immer wieder die Zähne aus. Vielleicht bin ich auch einfach zu doof dafür. Aber ich glaube, ich bin nicht der Einzige, der das so sieht.

Also, was meint ihr? Bin ich ein ketzerischer Programmierer-Rebell, der die heiligen Kühe von C schlachtet? Oder stimmt ihr mir heimlich zu, dass C's Input/Output...verbesserungswürdig ist?
Lasst es mich wissen! Aber bitte keine Formatstrings in den Kommentaren! 😉
Denn, wie Dennis Ritchie, der Schöpfer von C, wahrscheinlich sagen würde: "Wenigstens funktioniert es irgendwie."
