이제 C 프로그래밍 과정을 수강 중이므로 C에 대해 완전히 새내기. 코드가 제대로 작동하지 않아 두통이 생깁니다. 여기C - getchar()로 예기치 않은 문자 읽기.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>
int main()
{
printf("\n\nList of Paycodes:\n");
printf("1 Manager\n");
printf("2 Hourly worker\n");
printf("3 Commission Worker\n");
printf("4 Cook\n\n");
bool cd=true;
float weekmoney;
char name[100];
char code[10];
int codeint;
char cl;
int cllen;
char hw[5];
int hwint;
int salary=0;
while(cd){
printf("Enter employee name: ");
fgets(name,100,stdin);
name[strlen(name)-1]='\0'; // nk remove new line lepas user input
printf("Enter employee\'s paycode: ");
strcpy(code, "");
fgets(code, 10, stdin);
codeint = atoi(code);
if(codeint > 4 || codeint <= 0){
printf("\nPlease enter correct employee\'s paycode!\n\n");
continue;
}else if(codeint == 1){
printf("%s\'s pay for this week (RM): 500.00\n\n", name);
}else if(codeint == 2){
printf("Enter hours work this week: ");
fgets(hw, 5, stdin);
hwint=atoi(hw);
if(hwint > 12){
hwint -= 12;
salary += 500;
}
if(hwint > 0){
for(int i=0;i < hwint;i++){
salary += 100;
}
}
printf("%s\'s pay for this week (RM): %d\n\n", name, salary);
}else if(codeint == 3){
printf("Enter %s\'s this week sales (RM): ", name);
scanf("%f",&weekmoney);
printf("%s\'s pay for this week (RM): %.1f\n", name, (((5.7/100)*weekmoney)+250));
}
while(true){
printf("Do you wish to continue? (Y = Yes, N = No): ");
cl=getchar();
getchar();
if(tolower(cl) == 'y'){
break;
}else if(tolower(cl) == 'n'){
cd=false;
break;
}else{
printf("\nPlease enter correct value!\n\n");
continue;
}
}
printf("\n");
}
}
문제 및 설명입니다
여기에 문제가 보여 내 코드입니다.내 코드는 문제 섹션을 통해 실행되지 않을 경우이 부분의 코드를 통해 실행 내 코드
printf("Enter %s\'s this week sales (RM): ", name);
scanf("%f",&weekmoney);
printf("%s\'s pay for this week (RM): %.1f\n", name, (((5.7/100)*weekmoney)+250));
여기
cl=getchar();
getchar();
if(tolower(cl) == 'y'){
break;
}else if(tolower(cl) == 'n'){
cd=false;
break;
}else{
printf("\nPlease enter correct value!\n\n");
continue;
}
오류가 발생합니다이 코드는하지만, 작동
경우 잘. 거의 한 시간 동안 솔루션 + 디버그를 찾으려고했지만 여전히 내 문제를 해결하기위한 올바른 해결책을 찾지 못했습니다. 여기
이와 같은 문제를 디버깅 할 때 발견 한 문자를 '잘못'인쇄하는 데 도움이 될 수 있습니다. 예를 들어'printf ("% d (% c) \ n", cl, isprint (cl)? cl : '.');)는 예상하지 못한 문자를 출력하고 10 문제가 무엇인지 생각해보십시오. 또한 EOF (그리고'scanf()'에서 반환 값을 확인해야한다. 'cl'의 타입을 바꿀 필요가 있습니다; 'getchar()'는 모든 char 값과 EOF를 반환해야하기 때문에'char'가 아닌'int'를 반환하기 때문에 EOF를 정확하게 처리 할 수 있도록'int' 여야합니다. –