在C中if else函数后代码中断

时间:2015-11-08 07:51:31

标签: c if-statement

所以我的代码在我做的if else函数中的结束花括号之后继续打破。 它是否与返回EXIT_SUCCES有关,我使用它是错误的吗?

这是我的代码:

//  recursive.c
//  lynda

#include <stdio.h>
#include <stdlib.h>
/*
 checks for traffic light if else example
 */
void processColor(char c);
void checkTraficLight(void);
int main(void){
    checkTraficLight();
    return EXIT_SUCCESS;
}

void checkTraficLight(void){
    printf("what is the light? r, y, g: \n");
    char color;
    scanf("%c", &color);
    processColor(color);
}

void processColor(char c){
    if (c == 'r') {
        printf("color is red");
    } else if (c == 'y'){
        printf("color is yellow");
    } else if(c == 'g'){
        printf("color is green");
    } else {
        printf("U entered an invalid color");
    }
}

[评论更新:]

但问题是它在打印出我想要打印的内容之前停止让我说我输入“r”它应该打印出“颜色是红色”而是它只是说“(lldb)并停止,它不打印出“颜色是红色”

2 个答案:

答案 0 :(得分:0)

我已经在代码块13.12上运行了代码,假设它是一个c ++代码。它运行良好,没有错误或崩溃。

代码的结构和第一行的注释使我想要编写递归函数。如果是这样,你应该提供有关该功能目标的更多细节。

答案 1 :(得分:0)

printf("color is red");

printf()打印到标准输出(又名stdout)。默认情况下,stdout是行缓冲的,因此只要不打印任何换行符,就不会写出其内容。

由于显示的代码不打印任何新行,因此不打印任何内容。

要解决此问题,请在应该打印的内容后附加一个尾随的新行:

printf("color is red\n");

或者通过执行

明确刷新stdout
printf("color is red");
flush(stdout);