我正在尝试从用户输入中选择一个元音的程序

时间:2013-09-01 19:49:29

标签: c

#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;
}

我需要帮助才能在用户输入中找到元音时找到正确的答案。

1 个答案:

答案 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)。如果你无法解释你的代码在做什么(或者至少你认为它应该做什么),那么你就不配得上你的程序了。