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

  • 本文关键字:用户 挑选 程序 一个 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 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(。如果你不能解释你的代码在做什么(或者至少你认为它应该做什么(,那么你就不配让你的程序工作。

最新更新