내용을 [19000]에 복사하기 위해 mp3 파일을 읽고 싶습니다. 그런 다음 내용 [19000]을 소켓에 보내려고합니다.C에서 .mp3, .pdf 또는 .jpg 파일을 읽는 방법
그러나 strcat (contents, tmp)에서 세그먼트 오류가 발생합니다.
그러나 HTML 파일을 읽으면이 코드가 아무 문제없이 작동합니다.
.mp3 파일을 읽고 내용을 [19000]으로 복사하는 방법은 무엇입니까 ??
크기는 8MB입니다. 그것이 널 문자로 종료되어야 C 스타일의 문자열을 예상대로
FILE *fp;
if ((fp = fopen("./test.mp3", "rb")) == NULL) {
fputs("Cannot open input file...\n", stderr);
exit(1);
}
char tmp[1024]="";
char contents[19000]="";
while (!feof(fp)) {
fread(tmp, 1, 1023, fp);
strcat(contents, tmp);
}
이진 파일입니다. 왜 strcat인가? 어쨌든, fread를 이용한 블록 읽기에 대해서도 예제를 확인하십시오. –
'strcat'는 연결 후 목적지 문자열에'char *'포인터를 리턴합니다; 너는 그것을 모으는 걸 놓쳤다. –
@suneric 아니요, 이진 데이터이고 반환 값은 어쨌든 첫 번째 매개 변수와 같습니다. 게다가 fread는 NIL을 설정하지 않으므로 더 큰 텍스트 파일에서도 실패 할 것입니다. –