所以我的代码在我做的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)并停止,它不打印出“颜色是红色”
答案 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);