C中函数内的简单函数

时间:2013-06-07 18:16:22

标签: c

我正在做一些简单的事情,但我似乎无法让它发挥作用。

基本上,我有main(),它基本上以两种不同的方式显示角色的显示方式。但是,我试着把它搞砸了一点,然后让它循环。我知道,我可以更容易地做到这一点,但只是试图让我的脚踏实地。

#include <stdio.h>
/* displays code number for a character*/
char Chat(void);

int main(void)
{
    char ch, gr;
    printf(" please enter a character.\n");
    scanf("%c", &ch);
    printf("The code for %c is%d. \n", ch, ch);

    Chat(void);
        if (gr == 'y')

    main();
        else
    return 0;

}
/* this function should obtain the value of gr and then send it to main() so that main can avaluate if
it should run again*/

    char Chat(void)
{
   char gr;
   printf(" press y for again, press n for instant death");
   gr = getchar();
    return gr;

}

我希望我想要做的事情是有道理的......我并不认为有必要将其击倒,因为我可能在......认真的人中留下了一些错字。

1 个答案:

答案 0 :(得分:4)

一些指示:

  
      
  1. 使用小写字母启动函数名称。但这只是社区大多数人的惯例。
  2.   
  3. 确保你总是在主要地方归还。
  4.   
  5. 不是在main中调用main();(危险),而是使用do-while循环,这样更好。

         

    <强> 4。在Chat(void)处传递void无效。

  6.   
  7. 您没有在任何地方使用Chat(void)的返回值。
  8.   
  9. else之前不需要return 0

  10.   
  11. getchar()吞下输入,例如用于输入先前输入的\n字符。

  12.   

swallow导致程序在一次旋转中停止。我已更改您的代码并在下面添加。 do-while版本在此下单独给出。

为了删除一些逻辑错误,很少有getchars添加到代码中,并且删除了Chat(void)以纠正编译器错误:

     #include <stdio.h>
    /* displays code number for a character*/
    char Chat(void);

    int main(void)
    {
        char ch, gr;
        printf(" please enter a character.\n");
        scanf("%c", &ch);
        getchar();  //swallows newline
        printf("The code for %c is %d. \n", ch, ch);
        gr=Chat();
        if (gr == 'y')
           main();  // this is not a good idea....
        return 0;
    }
    char Chat(void)
    {
       char gr;
       printf(" press y for again, press n for instant death");
       gr = getchar();
       getchar();  // swallows newline
        return gr;

    }

编辑:这是代码的do-while版本

#include <stdio.h>
    /* displays code number for a character*/
    char Chat(void);

    int main(void)
    {
        char ch, gr;
        do{
            printf(" please enter a character.\n");
            scanf("%c", &ch);
            getchar();  //swallows newline
            printf("The code for %c is %d. \n", ch, ch);
            gr=Chat();
       }while(gr=='y');
        return 0;
    }
   char Chat(void)
    {
       char gr;
       printf(" press y for again, press n for instant death");
       gr = getchar();
       getchar();  // swallows newline
        return gr;

    }