#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *v= "a";
char *o='e';
char * w='i';
char *e='o';
char *l='u';
char *u[1];
printf ("please enter your charactern");
scanf ("%c",& u);
if (u == v){
puts("the character is it a voweln");
}
if (u == o) {
puts("the character is it a voweln");
}
else
puts("the character is a constantn");
system("PAUSE");
return 0;
}
我需要帮助从用户输入中查找元音时获得正确答案。
首先,你忽略了你肯定收到的所有编译器警告,这让你感到羞耻。他们在那里帮助防止你做"愚蠢的事情"。
为什么所有这些废话?这是编译器试图告诉你的第一个"愚蠢的事情"。
char *v= "a";
char *o='e'; // invalid - Initializing a pointer to a constant 'e' (101).
char * w='i'; // invalid
char *e='o'; // invalid
char *l='u'; // invalid
您熟悉指针的工作原理吗? 如果没有,我建议你做一些阅读并理解它们。
第一行是有意义的 - 你正在创建一个字符串并将char* v
指向该字符串。
字符使用指针实际上毫无意义 - 甚至根本没有变量。只需直接比较它们:
char my_character;
if (my_character == 'a') {
// do something
}
至于阅读角色,同样,当它没有意义时,你正在使用指针:
char *u[1]; // why?
相反,只需定义单个char
变量。现在,去看看scanf
的文档。给它一个"%c"
格式字符串意味着"我只想读一个字符"。 然后,您需要告诉scanf
放在哪里。您可以通过向它传递要存储它的变量的"地址">来做到这一点。 你这样做(不出所料!(运算符&
的地址。
char input_character;
scanf("%c", &input_character);
有了这些信息,您应该能够完成您的工作。 接下来,我建议您查看 switch 语句。
最后,您必须使用一致的格式(缩进,间距(并使用有意义的变量名称,如果您希望作为程序员被认真对待。 为你毫无意义的变量拼写"元音"可能很"可爱",但这完全是胡说八道。
最重要的是,你永远不应该写一行代码,除非你确切地了解它的作用。如果你这样做,那么不要去向任何人寻求帮助(尤其是不是StackOverflow(。如果你不能解释你的代码在做什么(或者至少你认为它应该做什么(,那么你就不配让你的程序工作。