인쇄물에 약간의 어려움이 있습니다. 기본적으로 코드가 있고 에 값을 할당하고 있는데 이는 line_t
유형으로 정의됩니다 (아래 구조체 참조).getline()을 사용하면서 인쇄 문제가 발생했습니다.
보시다시피, bestmatch[].score (double)
, bestmatch[].index (int)
및 bestmatch[].buf (string)
에 대한 값을 저장하고 있습니다. 인쇄 할 때 아래의 두 번째 코드 블록에 bestmatch[i].index
과 bestmatch[i].score
이 올바르게 인쇄하십시오. 그러나 bestmatch[i].buf
은 전혀 인쇄하지 않습니다.
문제를 혼란스럽게하는 경우 (적어도 자신에게), scorecmp (첫 번째 코드 블록)의 끝에 bestmatch[i].buf
을 인쇄하면 정상적으로 인쇄됩니다. 나는 아래쪽에있는 scorecmp에 대한 참조를 위해 전화를 받았다.
왜 색인을 인쇄하고 벌금을 부과하지만 buf가 아닌가? 아니면이 문제를 어떻게 해결할 수 있습니까?
도움 주셔서 감사합니다. 당신이 메인에 등장, 추가 정보
에게 인쇄를 필요로하는 경우 다음과 같이 알려 주시기 바랍니다 (참조, TOP_SCORING_MAX 요소의 수는 베스트 매치 []에) :
int i;
for (i = 0; i<TOP_SCORING_MAX; i++) {
if (bestmatch[i].score != -1) {
printf("line\t%d, score = %6.3f and string is %s \n",
bestmatch[i].index,bestmatch[i].score, bestmatch[i].buf);
}
}
그리고 경우에
scorecmp(linePtr, bestmatch);
데이터를 초기화하는 방법을 보여 주어야하며, 'buf'포인터가 가리키는 문자열의 종류는 무엇입니까? – unwind
@unwind buf는 stdin의 입력 텍스트 파일 한 줄입니다. – KittiCat
@KittiCat'malloc()'을 사용하여 문자열을 저장하는 유효한 메모리 영역으로'buf '를 설정하지 않는 한, 바로 거기에 문제가 있습니다. 코스. 내가 말했듯이 더 많은 코드를 보여줍니다. – unwind