Ich weiß, diese Frage wurde oft gestellt, aber ich kann nicht herausfinden, was ich falsch mache. Ich bitte den Benutzer, eine Zeichenfolge einzugeben und zu zählen, wie oft ein Zeichen in der Zeichenfolge angezeigt wird. Dies ist mein Code:C zählen die Anzahl der Vorkommen in Zeichenfolge
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
char alphabetLower [26];
int alphabetLowerNumbers [26];
int alphabetUpperNumbers [5];
char userInput[30];
// store alphabet in array
for(int i =0; i < 26; i++)
{
char character = (97 + i);
alphabetLower[i] = character;
}
// assign alphabet number arrays to 0
for(int i=0; i < 5; i++)
{
alphabetLowerNumbers[i] = 0;
alphabetUpperNumbers[i] = 0;
}
puts("enter a string");
fgets(userInput, 30, stdin);
for(int i=0; i < 30; i++)
{
int ascii = userInput[i]; // ascii
alphabetLowerNumbers[ascii - 97]++;
}
for(int i=0; i < 26; i++)
{
printf("%c: ", alphabetLower[i]);
printf("%d\n", alphabetLowerNumbers[i]);
}
return 0;
}
Jedes Mal, wenn ich es ausführen, druckt es die Anzahl der Vorkommen bis zum Buchstaben ‚f‘ aus. Danach sind die Ergebnisse falsch und für einige Buchstaben werden Zufallszahlen ausgedruckt. Kann mir bitte jemand helfen, das zu beheben und mir zu erklären, was ich falsch mache? Vielen Dank.
enter a string
abc
a: 1
b: 1
c: 1
d: 0
e: 0
f: 32767
g: 1
h: 0
i: 1434561216
j: 32767
k: 206176841
l: 1
m: 1434561248
n: 32767
o: 1434561248
p: 32767
q: 1434561272
r: 32767
s: 171855872
t: 1
u: 0
v: 1
w: 206173472
x: 1
y: 206173376
z: 1
'for (i = 0 int; i <5; i ++)' Warum wollen Sie nur init bis zu 4? Das scheint Ihrem 'f' Problem zu entsprechen. – kaylum
@ kaylum Ich habe vergessen, das zu ändern. Ich habe das Programm zunächst mit 5 Buchstaben getestet. Vielen Dank. – rissandimo
@rissandimo Also ist das dein Problem oder nicht? – kaylum