Printing function entry and exit with spaces
我已经尝试使用下面的代码来打印函数入口 (foo) 和出口 (koo)。但它在执行时会给出随机符号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
输出:
1 2 3 4 5 6 7 8 9 10 11 | hai @hai ?hai hai hai haikoo haikoo haikoo haikoo haikoo |
我想输出为
1 2 3 4 5 6 7 8 9 10 | hai hai hai hai hai haikoo haikoo haikoo haikoo haikoo |
我怎样才能得到它?我在哪里犯错?它用于函数调用和函数退出的图形表示。这只是一个示例程序。我在Linux中使用
您正在修改空格
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | // naive solution #include <stdio.h> int count=0; void print_spaces (int spaces) { for(int i=0; i<spaces; i++) { printf(""); } } void foo(void) { print_spaces(count++); printf("hai\ "); } void koo() { print_spaces(--count); printf("haikoo\ "); } int main (void) { foo(); foo(); foo(); foo(); foo(); koo(); koo(); koo(); koo(); koo(); return 0; } |
更好的是,不要使用任何全局变量,因为这是不好的做法。使用循环并将计数器留给调用者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | // good solution #include <stdio.h> int count=0; void print_spaces (int spaces) { for(int i=0; i<spaces; i++) { printf(""); } } void foo(void) { printf("hai\ "); } void koo() { printf("haikoo\ "); } int main (void) { for(int i=0; i<5; i++) { print_spaces(i); foo(); } for(int i=4; i>=0; i--) { print_spaces(i); koo(); } return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h> char spa=' '; static int i=0; void foo() { int j=0; for(j=0;j<i;j++) printf("%c",spa); printf("hai\ "); i+=2; } void koo() { for(int j=0;j<i-2;j++) printf("%c",spa); printf("haikoo\ "); i-=2; } int main() { foo(); foo(); foo(); foo(); foo(); koo(); koo(); koo(); koo(); koo(); return 0; } |