-2

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

基本上,我有 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;

}

我希望我正在尝试做的事情是有意义的……而且我认为没有必要将其删除,因为我可能在……认真的人中留下了一些错字。

4

1 回答 1

4

一些指示:

  1. 函数名称以小写字母开头。但这只是大多数社区的惯例。
  2. 确保你总是在 main 中返回一些东西。
  3. main();您可以使用do-while循环而不是在 main 中调用(这很危险),这样会更好。

    4. 在 Chat(void) 中传递 void 无效。

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

  6. getchar()吞下输入,例如\n打算输入先前输入的字符。

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;

    }
于 2013-06-07T18:28:51.597 回答