2014-12-14 2 views
0

은 data.in 파일에서 데이터를 읽고 배열에 저장하는 C 프로그램을 작성합니다.배열에서 문자열을 찾습니다. -c 프로그래밍

a) 키보드에서 입력 한 이름을 찾습니다. 일치하는 후 반환하지 않는 경우 "Not found"가 배열에

data.in 파일 내용을 중복되지

B) 목록 모든 이름 :

5

빌 게이츠 (Bill Gates)

스티브 채용 정보

다니엘로드

B 일치 할 때 일리 목수

스티브 잡스는

내가 이름에 입력

, 출력은 항상조차 찾을 수 없습니다. 무엇이 문제인가?

+0

디버거에서 실행하고 코드를 한 행씩 단계별로 실행하여 실제로 수행중인 작업을 이해합니다. –

+2

파일의 이름을'fgets'로 읽습니다. 그러면 줄의 끝에 개 글자가 남습니다. 그러나 개행을 떠나지 않는'gets '로 검색 할 이름을 읽습니다. 한 가지 해결책은'fgets'를 사용하여 검색 할 이름을 읽는 것입니다. – ooga

답변

1

문제는 data.in 파일에서 읽는 fgets는 각 줄의 후행 줄 바꿈을 포함하지만 stdin의 가져 오기에는 후행 줄 바꿈이 포함되지 않는다는 것입니다. 그래서 일치하는 것이 없습니다.

당신은 여기에 후행 개행 문제에 대한 자세한 읽을 수 있습니다 : 당신이 일치하는 항목을 찾을 때 다른 사람들이 지적으로, Removing trailing newline character from fgets() input

을 그리고, 당신은 루프에서 중단 할 필요가있다.

2

이 줄

if(index == num) 
    printf("\n%s Not Found in array",name); 

index == num 항상 true 될 것입니다.

+1

이름을 찾으면 루프에서 빠져 나가야합니다. – ooga

관련 문제