Funktion erstellen!
-
C oder C++, welches Schweinderl hättens denn gern?
-
[quote="DirkB"]Wofür ist das i in count_char da?
Und was gibst du ein?
Ist dir der Unterschied zwischen 1 und '1' klar (dem Wert 1 und dem Zeichen, das die 1 darstellt)?[/quote]
das i in count_char brauche ich ja einmal für die vorschleife und einmal als ausgabewert dafür wie oft die gesuchte Zahl in der Zeichenkette vorkommt.
Ich weiß leider nicht was du mit 1 und "1" meinst...
danke für deine Antwort!
[quote="Scorcher24"]C oder C++, welches Schweinderl hättens denn gern?[/quote]
Ist alles in C.
Dir auch danke!
-
MeKing schrieb:
das i in count_char brauche ich ja einmal für die vorschleife und einmal als ausgabewert dafür wie oft die gesuchte Zahl in der Zeichenkette vorkommt.
Das sind zwei sehr verschiedene Sachen.
Meinst du, die kann man in einer Variable vereinen?MeKing schrieb:
Ich weiß leider nicht was du mit 1 und "1" meinst...
Ich habe '1' geschrieben nicht "1". Großer Unterschied.
1 entspricht dem Wert 1.
'1' ist das Zeichen, dass die Ziffer 1 darstellt. Der Wert hängt von der Codierung ab. Bei ASCII ist es der Wert 49.
"1" ist ein Zeiger auf ein Stringliteral (Zeichenkette), das neben der '1' noch aus dem Endezeichen '\0' besteht.Lass das mal mit Zahlen sein und nimm erstmal Buchstaben.
(Dann Funktioniert das auch mit Ziffern.)
-
Wieso wird ein int mit einem char verglichen? Wenn du die ASCII 1 suchen willst musst du zu deinem eingelesen Ganzzahlwert + 48 rechnen bevor du vergleichst.
'1' = 49 = 48 +1
'2' = 50 = 48 +2
'3' = 51 = 48 +3
-
Ein int kann auch ein Zeichen aufnehmen.*
Und es muss nicht 48 sein.
Das Zeichen '0' ist besser.Denn '1' = 49 gilt bei ASCII
'1' = '0' + 1 gilt bei jeder Codierung.*Ein char ist auch nur ein Ganzzahltyp mit eingeschränktem Wertebereich.
-
Habe die Aufgabe jetzt folgendermaßen gelöst:
#include <stdio.h>
#include <string.h>
#define anzahl 10int count_char(char zeichen[anzahl],char str[anzahl])
{
int i, j=0;
for (i=0;i<strlen(str);i++)
{
if (str[i] == zeichen[0])
j++;
}
return j;
}
int main (void)
{
char str[anzahl], zeichen[anzahl];
int wert;printf("Bitte Zeichenkette (Buchstaben) und danach den gesuchten Buchstaben eingeben:\n");
scanf("%s ", str);
scanf("%s", zeichen);
wert = count_char(zeichen,str);
printf("Der gesuchte Buchstabe wurde %d-mal gefunden", wert);return 0;
}Danke für eure Hilfe!
-
Nicht ganz, jetzt kannst du nämlich beliebig viele Zeichen zum suchen eingeben. -Das würde deinen Count zerhauen.
-
inflames2k schrieb:
Nicht ganz, jetzt kannst du nämlich beliebig viele Zeichen zum suchen eingeben. -Das würde deinen Count zerhauen.
Er sucht ja nur nach dem ersten Zeichen.
Makros werden in C groß geschrieben, damit man sie von Variablen unterscheiden kann.
Und du solltest die Länge deiner Eingabe begrenzen.
scanf("%9s ", str); scanf("%9s", zeichen);
Mit Makros ist das, bei scanf, etwas blöd zu machen.
-
Müßte doch mit
scanf("%*s ", ANZAHL-1, str);
gehen, oder?
-
Nein
scanf schrieb:
* An optional starting asterisk indicates that the data is to be read from the stream but ignored (i.e. it is not stored in the location pointed by an argument).
Nachzulesen: http://www.cplusplus.com/reference/cstdio/scanf/
Bei
printf
kann man mit dem * diewidth
undprecision
als Parameter übergeben.Schließe nie von
printf
aufscanf
und umgekehrt. Das sind zwei verschieden Funktionen.