cdm05162   2년 전

난이도를 l[i]배열에 저장하려고 pi[ ]배열에서 null값 앞에 있는 난이도를 저장하려고 했습니다.

l[i] = (strlen-2)pi; 컴파일에러가 뜨는데 어떻게 표현해야 할까요?

onart   2년 전

일단 해당 방식을 사용하려면 scanf가 아닌 fgets를 사용해야 합니다. scanf("%s");는 공백 전까지만 읽습니다.

(strlen-2)pi에는 여러 가지 문제점이 있는데, 함수 포인터에서 2를 빼서 딱히 나올 게 없다는 점, 함수 포인터는 호출과 대입 말고 허용된 게 없는데(strlen은 상수라서 대입은 불가능) 옆에 pi를 붙여넣은 점, pi의 내용을 읽어오기 전인데 함수를 쓰려고 시도한 느낌이 보이는 점입니다.

말씀하신 대로 하려면 대충 이렇게 해야 합니다.

cdm05162   2년 전

답변 감사합니다.

추가적으로  난이도가 4까지 입력 될 수 있어서 min값은 5로 선언하고 비교해야 하지 않나요?

출력값에 난이도까지 포함되어서 strtok(pi," "); 로 난이도와 null부분을 자르고 출력하였습니다.

그런데 예제는 맞게 출력되는데 채점결과는 틀렸다고 나옵니다.

onart   2년 전

제가 제대로 확인을 안 했군요. 죄송합니다.

- 3행의 scanf가 첫 줄을 다 소모하는 게 아니라서 이후 fgets()를 추가로 호출해야 합니다.

- fgets()가 개행까지 읽어들여서 8행 for문의 조건을 *p에서 *p && *p!='\n'으로 바꿔야 합니다. (마지막 개행이 있을 수도 있고 없을 수도 있음) 이에 따라 배열 크기를 조금 더 늘리는 것이 안전할 겁니다.

그 외,

- 12행의 조건이 min==*p이므로 min값을 '4'로 해도 됩니다.

- 10행이 있으므로 특별히 변화를 주지 않아도 출력값에 난이도가 포함되지 않는 것이 정상입니다.

댓글을 작성하려면 로그인해야 합니다.