Dann meine Frage zu malloc:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main(void) {
unsigned int i;
int n, result;
char *buffer;
printf("Wieviele Sterne? ");
scanf("%u", &i);
buffer = (char*) malloc(i + 1); // ein Byte extra für das String-Ende-Zeichen
if (buffer != NULL) { // sonst haben wir keinen Speicher bekommen
buffer[i] = '\0'; // String-Ende-Zeichen setzen
while(i--) {
buffer[i] = '*'; // String mit Sternchen füllen
}
printf("%s\n", buffer);
free(buffer); // Wichtig! Speicher wieder freigeben
result = EXIT_SUCCESS;
}
else {
printf("Not enough memory to create %u stars\n", i);
result = EXIT_FAILURE;
}
return result;
}
Ich habe es ja auf unsigned int umgebaut.
Bis 32767 funktioniert es wie erwartet, ab 32768 gibt es erst Leerzeilen aus bevor es mit Sternen anfängt (ich beschleunige den Emulator dann mit der ">>" Taste).
Wird die Zahl groß genug schlägt malloc fehl und es wird die Fehlermeldung ausgegeben (wie erwartet).
Woher kommen die Leerzeilen? Kann printf das nicht?