基本上我需要在一个字符数组中给出元音的数量(最后一个子程序,但我继续得到这个错误,说“左值作为赋值的左操作数”我试图在我自己的搜索中找到它意味着什么(和有答案)但是因为它与我所做的不完全相同,我仍然没有真正得到它。有人可以向我解释我需要做什么吗?
#include <stdio.h>
#include <string.h>
int Anzahl (char *);
void Umgekehrt (char *, char *, int);
int Grossbuchstaben (char *, int);
int Anzahl2 (char *, int);
int main ()
{
char kette[51], kette2[51];
int x, grossbuchstabenzahl, AnzahlVokale;
printf ("Schreiben Sie etwas\n");
fgets (kette, 51, stdin);
x = Anzahl (kette);
printf ("es gibt %d zeichen in der Zeichenkette\n", x);
Umgekehrt (kette, kette2, x);
grossbuchstabenzahl = Grossbuchstaben (kette, x);
printf ("Die Anzahl die Grossbuchstaben ist: %d\n", grossbuchstabenzahl);
AnzahlVokale = Anzahl2 (kette, x);
printf ("Es gibt %d Vokale in der Zeichenkette", AnzahlVokale);
}
int Anzahl (char *kette)
{
int x;
puts (kette);
x = strlen (kette) - 1;
return x;
}
void Umgekehrt (char *kette, char *kette2, int x)
{
int i;
for (i = x; i >= 0; i--) {
kette2[x - i] = kette[i];
}
puts (kette2);
}
int Grossbuchstaben (char *kette, int x)
{
int i, grossbuchstabenzahl;
grossbuchstabenzahl = 0;
for (i = 0; i <= x; i++) {
if (kette[i] > 'A' & kette[i] < 'Z') {
grossbuchstabenzahl += 1;
}
}
return grossbuchstabenzahl;
}
int Anzahl2 (char *kette, int x)
{
int i, AnzahlVokale;
AnzahlVokale = 0;
for (i = 0; i <= x; i++) {
if (kette[i] = 'a' | kette[i] = 'A' | kette[i] = 'e' | kette[i] =
'E' | kette[i] = 'u' | kette[i] = 'U' | kette[i] =
'i' | kette[i] = 'I' | kette[i] = 'o' | kette[i] =
'O' | kette[i] = 'y' | kette[i] = 'Y') {
AnzahlVokale += 1;
}
}
return AnzahlVokale;
}
| kette[i]='o' | kette[i]='O' | kette[i]='y' | kette[i] ='Y' )
^^^
错误在这里。
你试图分配给它,你应该使用==
。
而且你必须使用逻辑或||
而不是按位或|
。
所以纠正的比较是
kette[i]=='a' || kette[i]== 'A' || ...
也
kette[i]> 'A' & kette[i]< 'Z'
将会
kette[i]>='A' && kette[i]<='Z' //You were earlier missing the `A` and `Z`
你也可以使用strchr()
这个角色是否是"aeiouyAEIOUY"
之一。像这样的东西
if (strchr("aeiouyYAEIOU", kette[i]))
AnzahlVokale+=1;
您没有检查fgets
的返回值。您应该检查它以了解对fgets()
的调用是否成功。
这里的主要问题是位于函数Anzahl2
中,在这里你迭代名为kette
的数组。在if
声明中,您有2个问题。
==
(等于运算符)而不是=
(赋值运算符)。if
语句中的每个比较都应该由||
(二进制或二进制)的|
(逻辑或)分隔。