Ich hab hier ein kleinen "Drecksproggi" geschrieben, dass vom Prinzip her läuft. Es wird aber eine scanf() Funktion einfach übergangen.
Code:
#include <stdio.h>
#include <string.h>
/*
#include "stringFunctions.c"
#include "stringFunctions.h"
*/
void outString(char string[],int stringLength)
{
int i;
for (i = 0; i < stringLength; i++)
{
printf("%c",string[i]);
}
}
int getString(char string[])
{
int stringLength;
scanf("%s",&string[0]);
stringLength = strlen(string);
return stringLength;
}
int equal(char string1[], int stringLength1, char string2[], int stringLength2)
{
int i;
if (stringLength1 != stringLength2)
{
return 0;
}
else
{
for (i = 0; i < stringLength1; i++)
{
if (string1[i] != string2[i])
{ return 0; }
}
}
return 1;
}
int searchChar(char string[], int stringLength, char search)
{
int i;
int searchresult = 0;
for (i=0; i < stringLength; i++)
{
if (string[i] == search)
{ searchresult++; }
}
return searchresult;
}
int main()
{
char name1[15];
char name2[15];
int stringLength1 = 0;
int stringLength2 = 0;
int gleichheit = 0;
char buchstabe;
int ergebnis1 = 0;
int ergebnis2 = 0;
printf("Bitte geben Sie den ersten Namen ein: ");
stringLength1 = getString(name1);
printf("Bitte geben Sie den zweiten Namen ein: ");
stringLength2 = getString(name2);
printf("Das erste Wort war: ");
outString(name1,stringLength1);
printf("\nEs hat %i Buchstaben.",stringLength1);
printf("\nDas zweie Wort war: ");
outString(name2,stringLength2);
printf("\nEs hat %i Buchstaben.",stringLength2);
printf("\nTeste auf Gleichheit...\n");
gleichheit = equal(name1,stringLength1,name2,stringLength2);
if (gleichheit == 0)
{
printf("\nDie beiden Namen sind nicht gleich!");
}
else
{
printf("\nDie beiden Namen sind gleich!");
}
printf("\nNach welchem Buchstaben soll gesucht werden? ");
scanf("%c",&buchstabe); /* Dieses scanf() wird übergangen :( */
ergebnis1 = searchChar(name1,stringLength1,buchstabe);
ergebnis2 = searchChar(name2,stringLength2,buchstabe);
printf("\nDer erste Name enthält den gesuchten Buchstaben %i mal",ergebnis1);
printf("\nDer zweite Name enthält den gesuchten Buchstaben %i mal\n",ergebnis2);
return 0;
}
Ich hab's auch schonmal mit fflush(stdin) und (stdout) probiert, aber es kommt immer noch das selbe. Findet vieleicht jemand eine Programmierfehler, oder weiß jemand Rat, was ich tun kann, um das zu unterbinden?
Lesezeichen