#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 character\n");
scanf ("%c",& u);
if (u == v){
puts("the character is it a vowel\n");
}
if (u == o) {
puts("the character is it a vowel\n");
}
else
puts("the character is a constant\n");
system("PAUSE");
return 0;
}
我需要帮助才能在用户输入中找到元音时找到正确的答案。
答案 0 :(得分:4)
首先,对你忽略了你当然收到的所有编译器警告感到羞耻。他们在那里帮助阻止你做“愚蠢的事情。”
为什么所有这些废话?这是编译器试图告诉你的第一个“愚蠢的事情”。
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
您熟悉指针的工作原理吗?如果没有,我建议您do some reading并理解它们。
第一行是有意义的 - 你正在创建一个字符串并将char* v
指向该字符串。
但是对于那些角色使用指针真的没有意义 - 甚至根本就没有变量。只是直接比较它们:
char my_character;
if (my_character == 'a') {
// do something
}
至于阅读角色,再次,当你没有意义时,你会使用指针:
char *u[1]; // why?
相反,只需定义一个char
变量即可。现在,请查看scanf
的文档。给它一个格式字符串"%c"
意味着“我只想读一个字符”。然后,您需要告诉scanf
放置它的位置。你可以通过传递“地址”你想要存储它的变量来做到这一点。你这样做(不出所料!)运算符的{em>地址{{1} }。
&
有了这些信息,您应该能够完成您的工作。接下来,我建议您查看switch statement。
最后,你必须使用一致的格式(缩进,间距)并使用有意义的变量名,如果你有任何希望被作为程序员认真对待的话。为你的无意义变量拼出“元音”可能是“可爱的”,但这完全是胡说八道。
最重要的是,你应该从不编写一行代码,除非你完全理解它的作用。如果你这样做,那么不要向任何人寻求帮助(尤其不是StackOverflow)。如果你无法解释你的代码在做什么(或者至少你认为它应该做什么),那么你就不配得上你的程序了。