필자는 특정 키를 누르는 것과 일치하는 숫자 ASCII 값을 표시하고자하는 작은 C 프로그램을 작성했습니다.동일한 C 프로그램에서 putchar 및 printf를 함께 사용 하시겠습니까?
내 코드는 다음과 같습니다. 문제는 프로그램을 실행 한 후 입력을 받아들이지 만 다른 것은하지 않는다는 것입니다. 첫 번째 printf 문까지 도달하지도 않습니다. 문제가 무엇인지 파악할 수 없습니다. 은 동일한 프로그램의 getf() 함수와 printf() 함수를 혼합 할 때 문제가 있습니까? Cygwin에서와
#include <stdio.h>
int main() {
const int numKeys = 256;
int keys[numKeys];
int i;
for (i = 0; i < numKeys; i++) {
keys[i] = 0;
}
printf("\n Start pressing some keys!\n\n");
int c;
while ((c = getchar()) != EOF) {
printf(" CAPTURED: %d\n", c);
keys[c]++;
}
printf("\n\n ** RESULTS ** \n\n");
for (i = 0; i < numKeys; i++) {
if (keys[i] != 0) {
printf(" Key with value %d was called %d times.", i, keys[i]);
}
}
}
나는 윈도우 XP 프로 기계를 가지고 있음을 명확히해야한다가 설치되어 있어야합니다. Cygwin을 개발 공간으로 사용하기 때문에이 환경에서이 유형의 프로그램을 실행할 때 다른 점이 있는지 궁금합니다.
나는 getch 효과가 stdin으로 나타나고, printf 효과가 stdout 인 것처럼 혼합하는 데 문제가 있다고 생각하지 않습니다. 나는 그 문제가 다른 곳에있을 것이라고 생각한다. – jacob
Enter 키를 누르십니까? – Xymostech
'printf ("result")'또는'printf (captured)'에 도달하지 못했습니까? 그렇다면'EOF'를 얻지 못하면 어떻게'while loop'를 깨뜨릴 것인가? 'getchar'는'\ r \ n' 또는'Enter'가 눌러지기를 기다립니다. getche를 사용하십시오. 하지만 그때조차도 첫 번째 문제가 발생할 것입니다. –