Hallo,
ich habe hier die Aufgabe 5 vom zweiten Tag:
Was bewirkt das folgende Programm? (Geben Sie es ein und starten Sie es.)
1: /* Ueb2-5.c */
2: #include <stdio.h>
3: #include <string.h>
4: int main()
5: {
6: char puffer[256];
7:
8: printf( "Bitte Name eingeben und <Eingabe> druecken:\n");
9: fgets( puffer,256,stdin );
10:
11: printf( "\nIhr Name enthält %d Zeichen (inkl. Leerzeichen).",
12 strlen( puffer ));
13:
14: return 0;
15: }
Und das habe ich davon gemacht:
/*Ueb25.c*/
#include<stdio.h>
#include<string.h>
int main()
{
char puffer[256];
printf("Bitte Name eingeben und <Eingabe>drücken:\n");
fgets( puffer,256,stdin );
printf("\nIhr Name enthält %d Zeichen (inkl. Leerzeichen).\n", strlen( puffer ));
return 0;
}
Und dieses Programm zählt eins zu viel! Wenn ich mir das so anschaue, dann kann ich mir nicht vorstellen, das die Funktion strlen einen falschen Wert ausgibt. (Ich kann das jetzt leider nicht nachprüfen. Ich habe kein C-Buch. Ich besorg mir aber eins.)
Ich vermute jetzt, der Fehler entsteht beim Gebrauch der Konsole. Wenn ich etwas eingebe, dann springt der Curser gleich weiter. Dann erst kann ich <Eingabe> drücken. Möglicherweise enthält puffer dadurch ein Zeichen mehr.
Der zweite Tag ist ganz schön umfangreich.
Viele Grüsse
Mumie
ich habe hier die Aufgabe 5 vom zweiten Tag:
Was bewirkt das folgende Programm? (Geben Sie es ein und starten Sie es.)
1: /* Ueb2-5.c */
2: #include <stdio.h>
3: #include <string.h>
4: int main()
5: {
6: char puffer[256];
7:
8: printf( "Bitte Name eingeben und <Eingabe> druecken:\n");
9: fgets( puffer,256,stdin );
10:
11: printf( "\nIhr Name enthält %d Zeichen (inkl. Leerzeichen).",
12 strlen( puffer ));
13:
14: return 0;
15: }
Und das habe ich davon gemacht:
/*Ueb25.c*/
#include<stdio.h>
#include<string.h>
int main()
{
char puffer[256];
printf("Bitte Name eingeben und <Eingabe>drücken:\n");
fgets( puffer,256,stdin );
printf("\nIhr Name enthält %d Zeichen (inkl. Leerzeichen).\n", strlen( puffer ));
return 0;
}
Und dieses Programm zählt eins zu viel! Wenn ich mir das so anschaue, dann kann ich mir nicht vorstellen, das die Funktion strlen einen falschen Wert ausgibt. (Ich kann das jetzt leider nicht nachprüfen. Ich habe kein C-Buch. Ich besorg mir aber eins.)
Ich vermute jetzt, der Fehler entsteht beim Gebrauch der Konsole. Wenn ich etwas eingebe, dann springt der Curser gleich weiter. Dann erst kann ich <Eingabe> drücken. Möglicherweise enthält puffer dadurch ein Zeichen mehr.
Der zweite Tag ist ganz schön umfangreich.
Viele Grüsse
Mumie