int getExt(char *file_name, char *ext) {
char *p = strrchr(file_name, '.');
if(p == NULL) {
return 0;
}
strcpy(ext, p);
return 1;
}
에서 파일의 확장자를 얻기 위해 다음과 같은 기능을 사용하고 내가 이런 식으로 호출하고
:
char file_in[40] = "santa.bmp", file_out[40] = "santa.pgn";
char file_in_ext[4], file_out_ext[4];
getExt(file_in, file_in_ext);
getExt(file_out, file_out_ext);
printf("file_in_ext: %s\nfile_out_ext: %s\n", file_in_ext, file_out_ext);
내가 무엇입니까 이 출력은 다음과 같습니다.
file_in_ext: .bmp
file_out_ext: xn.bmp
분명히 내 전체 프로그램이 망가져 있습니다. 그러나 이것은 대학 테스터에서만 발생합니다.
예, 맞습니다. 숙제입니다. 그럼에도 불구하고 제 질문은 숙제를 해결하지 못합니다. 어쩌면 숙제의 0.0001 % 일 수도 있습니다. 그러므로 제 질문이 적절하다고 생각합니다.
어쨌든 이상한 점은 개인용 컴퓨터, x64 아키텍처 및 Debian 7에서 모두 잘 작동한다는 것입니다. 나는 올바른 출력을 얻고있다 : 그것은
데비안 7. 그냥 것을
가file_in_ext: .bmp
file_out_ext: .pgm
정말 대학 테스터에 대해 잘 모르겠어요 이런 일이 발생하고 주변에 얻을 수있는 방법이 왜 아십니까 이?
'char file_in_ext [4], file_out_ext [4]; '가 작습니다. – BLUEPIXY
터미네이터 또는 '.'를 끝내는 것을 잊어 버렸습니다. 귀하의 확장 버퍼. '.ext \ 0'은 5 개의 문자가 필요합니다; 4. – WhozCraig
Exten *** SSSSSSSSS *** ion ... –