2014-04-30 4 views
0

이 함수를 호출 할 때마다 문자열을 입력 할 기회가 주어지지 않습니다. 확실하지 왜 내 구문은 자리에 꽤 확신합니다. 내가 줄 바꿈 함께 할 수있는 뭔가가 생각하지만 당신은 확실히해야 함fgets는 입력을받지 않고 쓰러집니다.

void serchName(dealers_t *ptr, int numDealers) 
{ 
    char dealerName[NAME_LEN]; 
    int index; 

    printf("please enter the dealer's name:"); 
    fgets(dealerName, sizeof(dealerName), stdin); 
    system("PAUSE"); 

    for (index = 0; index < numDealers; index++, ptr++) 
    { 
     if (strcmp(dealerName, ptr->name) == 0) 
     { 
      printf("MATCH FOUND:%s\n%s\n%s\n%i\n%s\n", ptr->name,ptr->city,ptr->state,ptr->zip,ptr->phone); 
     } 
    } 
} 
+1

통화하기 전에 무엇인가가 있습니다. 그렇지 않은지 확인하십시오. – this

+1

fflush (stdin); 혹시? – Jiminion

+3

@Jim 정의되지 않은 동작이 필요한 경우에만. – this

답변

1

제거하는 방법을 알고하지 않는 일부 '\n' 왼쪽 오버 이전의 I/O 활동에서.

동일한 프로그램에서 fgets()을 사용하고 scanf()과 혼합하지 않는 것이 가장 좋은 메시지는 입니다.

하지만 다른 코드를 볼 수 없으므로 왼쪽 코드 '\n'을 사용하려면 다음을 제안하십시오.

printf("please enter the dealer's name:"); 
int ch; 
ch = fgetc(stdin); 
if (ch != '\n') ungetc(ch, stdin); 
if (fgets(dealerName, sizeof(dealerName), stdin) == NULL) Handle_EOForIOError(); 
관련 문제