printf를 사용하여 이해할 수없는 문제가 있습니다. 이 문제가 생길 때가 처음인데, 그것은 순진한 것이지만 무엇이든지, 스스로 해결할 수는 없을 것입니다 ... 아마도 그것은 피곤하기 때문일 것입니다 : fprintf (그리고 나는 발견했습니다. 올바르게)의 printf에 대해서도 사실 문자열Printf 및 fprintf는 첫 번째 인수 만 인쇄합니다.
여기에 관련 코드의 내용은 "()는 null를"그것은 단지 "0"번호를 인쇄 할 두 번째에서 첫 번째 인수를 인쇄합니다
#include <math.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printInputStream(MatePair* inputStream, char* leftFile, char* rightFile){
MatePair* iterator = inputStream;
FILE* outLeft = fopen(leftFile, "w");
FILE* outRight = fopen(rightFile, "w");
while (iterator->leftRow != MATEPAIR_STOP){
fprintf(outLeft, "%d: \n", iterator->leftRow);
fprintf(outLeft, "%s \n", iterator->leftDNA);
fprintf(outLeft, "%d: %s \n", iterator->leftRow, iterator->leftDNA);
iterator++;
}
fclose(outLeft);
fclose(outRight);
}
가 여기에 출력의 시작 :
48:
NAATAGACCTATATCCTGTACCCAAACAGAAGACAGAGGATTAACCAAACTCTT
48: (null)
44:
NTAGCCATCTTAGACACATGAATATCTTGGGTCACAACTCATACCTCAACAAAA
44: (null)
40:
NAAAATAAGGGGTATACTCGCTTCGGGGCCCCATTTGGCCTCCAAAAGGGGGCG
40: (null)
36:
NTCTATCTTGCTCGAGAGAAAGGGTTGCCTTAGGGTTTTTTGGGGGGGGCTGTA
36: (null)
32:
NCTATAGAAATTTCCCATACCAACTAGACATTTATCTTCCTGTTTTTTTCCGCC
32: (null)
위와 같이 배열 tw의 모든 멤버를 출력합니다. 얼음 : 한 번 인수 당 두 번 논쟁. 데이터는 괜찮습니다. 실제로 첫 번째 방법은 모두 괜찮습니다. 두 번째 방법은 첫 번째 인수 만 인쇄합니다. 아이디어가 있으십니까? 미리 감사드립니다.
컴파일시 모든 경고 (-gcc의 경우)를 켜고'fprintf's에 대한 경고가 표시되는지 확인하십시오. 'iterator-> leftRow'는'int'가 아닌 다른 타입의 것입니다. – Shahbaz
'int'와'char *'를'fprintf()'에 넘기는 테스트 케이스를 작성했다면 완벽하게 작동합니다. 이것은 귀하의 데이터가 문제임을 지적합니다. @pmg는 아래 답변에서 가장 정확합니다. 유형이 잘못되었지만 이와 같은 문제에 접근 할 때 사용해야 할 생각을 설명하고 싶었습니다. –
미래의 독자를 위해 int64_t에 대한 올바른 printf 형식은 % I64d입니다. 아니면 적어도 저에게는 효과적입니다. 모두가 고마움을 표하는 것은 매우 순진한 실수라고 생각했습니다. 문제는 대개 컴파일러에서 이러한 오류에 대한 경고를 받지만이 경우는 약간 다르다는 것입니다. 지금부터 -Wall -Wextra 및 -pedantic을 사용하는 것이 더 좋습니다. – Alex