Add string assignments.
This commit is contained in:
parent
63ca042679
commit
4c5c651c40
31
02_strings/anfangsbuchstabe.c
Normal file
31
02_strings/anfangsbuchstabe.c
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Schreiben Sie eine Funktion schreibeAnfangGross, die eine Zeichenkette übergeben bekommt, den Anfangsbuchstaben jedes Wortes groß
|
||||
* schreibt und einen Zeiger auf den Anfang dieser Zeichenkette zurückgibt. Nutzen Sie für die Eingabe die Eingabefunktion aus
|
||||
* einer der vorherigen Übungen.
|
||||
*
|
||||
* Möglicher Programmablauf:
|
||||
* >> Geben Sie einen Text nur mit Kleinbuchstaben ein: das ist das haus vom nikolaus. und nebendran wohnt der weihnachtsmann.
|
||||
* Der bearbeitete Text lautet:
|
||||
* "Das Ist Das Haus Vom Nikolaus. Und Nebendran Wohnt Der Weihnachtsmann."
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "eingabe.h"
|
||||
|
||||
#define MAX_TEXT_LEN 100
|
||||
|
||||
char *schreibeAnfangGross(char *text, int maxZeichen);
|
||||
|
||||
int main()
|
||||
{
|
||||
char text[MAX_TEXT_LEN] = "";
|
||||
|
||||
gibTextEin("Geben Sie einen Text nur mit Kleinbuchstaben ein: ", text, MAX_TEXT_LEN);
|
||||
|
||||
printf("Der bearbeitete Text lautet:\n\"%s\"\n", schreibeAnfangGross(text, MAX_TEXT_LEN));
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
42
02_strings/eingabeTest.c
Normal file
42
02_strings/eingabeTest.c
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Legen Sie in einer Datei eingabe.h bzw. eingabe.c die Funktion gibTextEin an, die eine Zeichenkette übergeben bekommt,
|
||||
* die vor der Eingabe angezeigt wird, einen Puffer, in dem die eingelesene Zeichenkette gespeichert wird,
|
||||
* und die Größe des Puffers, die die Anzahl an einzulesenden Zeichen darstellt (inklusive Zeilenumbruch und abschließendem
|
||||
* Null-Zeichen). Die Funktion soll genau eine Zeile Text einlesen. Zudem soll die Funktion prüfen, ob noch Zeichen im
|
||||
* Eingabepuffer liegen und in diesem Fall den Eingabepuffer leeren. Im Fehlerfall gibt die Funktion 0 zurück, ansonsten 1. Die
|
||||
* eingelesene Zeichenkette soll den Zeilenumbruch zur Bestätigung der Eingabe nicht enthalten. Nutzen Sie zum Einlesen bitte fgets.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "eingabe.h"
|
||||
|
||||
#define MAX_EINGABE_LEN 10
|
||||
|
||||
int main()
|
||||
{
|
||||
char testChar;
|
||||
char eingabeText[MAX_EINGABE_LEN];
|
||||
|
||||
printf("Zum Testen bitte bei einem Programmdurchlauf weniger und beim naechsten mehr als %d Zeichen eingeben und jeweils mit ENTER bestaetigen.\n", MAX_EINGABE_LEN-1);
|
||||
|
||||
if(gibTextEin("Eingabe: ", eingabeText, MAX_EINGABE_LEN))
|
||||
{
|
||||
printf("Die Eingabe lautet \"%s\". Es sollte kein Zeilenumbruch auftreten.\n", eingabeText);
|
||||
printf("Wenn alles korrekt implementiert ist, sollte das Programm jetzt nur auf ein ENTER warten und die Ausgabe dann unten leer sein.\n");
|
||||
printf("Rest im Eingabepuffer: ");
|
||||
while((testChar = getchar()) != '\n')
|
||||
{
|
||||
printf("%c", testChar);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Beim Einlesen ist ein Fehler aufgetreten.\n");
|
||||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
78
02_strings/fehler.c
Normal file
78
02_strings/fehler.c
Normal file
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Untersuchen Sie das folgende Programm zunächst ohne es zu kompilieren oder auszuführen.
|
||||
* Welche Funktionen sind fehlerfrei?
|
||||
* Handelt es sich im Falle eines Fehlers um einen Laufzeitfehler oder um einen Compiler-Fehler?
|
||||
*
|
||||
* Hinweise:
|
||||
* Compiler-Fehler treten beim Kompilieren des Programms auf. Das Programm lässt sich also
|
||||
* gar nicht erst übersetzen.
|
||||
* Bei Laufzeitfehlern lässt sich das Programm (u.U. mit Warnungen) übersetzen. Der Fehler tritt
|
||||
* erst zur Laufzeit auf. Auch wenn der Fehler nicht immer auftritt bzw. das Programm zum Absturz
|
||||
* bringt, handelt es sich dennoch um einen Laufzeitfehler. Beliebte Laufzeitfehler sind z.B. Pufferüberläufe.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void kopiereString1()
|
||||
{
|
||||
char string1[] = "123456\n";
|
||||
char string2[] = "789\n";
|
||||
char *stringZgr1 = string1;
|
||||
char *stringZgr2 = string2;
|
||||
|
||||
while((*stringZgr2++ = *stringZgr1++) != '\0');
|
||||
|
||||
printf(string1);
|
||||
printf(string2);
|
||||
}
|
||||
|
||||
void kopiereString2()
|
||||
{
|
||||
char string1[] = "123456\n";
|
||||
char string2[] = "789\n";
|
||||
char *stringZgr1 = string1;
|
||||
char *stringZgr2 = string2;
|
||||
|
||||
while((*stringZgr1++ = *stringZgr2++) != '\0');
|
||||
|
||||
printf(string1);
|
||||
printf(string2);
|
||||
}
|
||||
|
||||
void kopiereString3()
|
||||
{
|
||||
char string1[] = "123456\n";
|
||||
char string2[] = "789\n";
|
||||
|
||||
while((*string1++ = *string2++) != '\0');
|
||||
|
||||
printf(string1);
|
||||
printf(string2);
|
||||
}
|
||||
|
||||
void kopiereString4()
|
||||
{
|
||||
char *string1 = "123456\n";
|
||||
char *string2 = "789\n";
|
||||
|
||||
while((*string1++ = *string2++) != '\0');
|
||||
|
||||
printf(string1);
|
||||
printf(string2);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("kopiereString1:\n");
|
||||
kopiereString1();
|
||||
|
||||
printf("kopiereString2:\n");
|
||||
kopiereString2();
|
||||
|
||||
printf("kopiereString3:\n");
|
||||
kopiereString3();
|
||||
|
||||
printf("kopiereString4:\n");
|
||||
kopiereString4();
|
||||
}
|
38
02_strings/laengen.c
Normal file
38
02_strings/laengen.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Was gibt folgendes Programm aus? Überlegen Sie sich erst Ihre Antworten.
|
||||
* Kompilieren und führen Sie erst danach das Programm aus.
|
||||
* Wie erklären Sie sich die Ausgaben?
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
void gibLaengenAus(char string[]);
|
||||
|
||||
int main()
|
||||
{
|
||||
char *string1 = "12345";
|
||||
char string2[] = "12345";
|
||||
char string3[10] = "12345";
|
||||
|
||||
printf("strlen(string1) = %2d\n", (int)strlen(string1));
|
||||
printf("strlen(string2) = %2d\n", (int)strlen(string2));
|
||||
printf("strlen(string3) = %2d\n", (int)strlen(string3));
|
||||
printf("\n");
|
||||
printf("sizeof(string1) = %2d\n", (int)sizeof(string1));
|
||||
printf("sizeof(string2) = %2d\n", (int)sizeof(string2));
|
||||
printf("sizeof(string3) = %2d\n", (int)sizeof(string3));
|
||||
printf("\n");
|
||||
printf("gibLaengenAus(string3):\n");
|
||||
|
||||
gibLaengenAus(string3);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void gibLaengenAus(char string[])
|
||||
{
|
||||
printf("strlen(string) = %2d\n", (int)strlen(string));
|
||||
printf("sizeof(string) = %2d\n", (int)sizeof(string));
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user