C에서 2차원 배열을 파일로 저장하는 방법은 무엇입니까?
-
21-12-2019 - |
문제
저는 초보 C 프로그래머이고 현재 C를 사용하여 viola jones 객체 감지 알고리즘을 구현하는 프로젝트를 진행하고 있습니다.2차원 배열의 데이터를 다른 프로그램 파일(예:main.c, header_file.h 등)
미리 감사드립니다.
해결책
찾고 있는 것이 무엇인지 확신할 만큼 세부적인 내용은 충분하지 않지만 수행하려는 작업의 기본 구조는 다음과 같습니다.
open file.csv for writing
for(iterate through one dimension of the array using i)
{
for(iterate through the other dimension of the array using j)
{
fprintf(yourfilehandle,"%d,",yourvalue[i][j]);
}
fprintf(yourfilehandle,"\n");
}
close your file
다른 사람들이 제안한 것처럼, 이것은 당신에게 .CSV
읽기 및 구문 분석이 쉽고 메모장이나 Excel에서 파일을 열어 문제 없이 볼 수 있기 때문에 매우 좋은 선택입니다.
이는 C 파일 I/O를 사용하여 이 작업을 수행하려고 했다고 가정하는 것입니다. 이는 완벽하게 유효한 작업 방법이지만 일부는 약간 구식이라고 느낍니다.
줄 끝에 불필요한 쉼표가 남습니다.그게 문제라면 사전 및 사후 조건을 수행하여 원하는 위치에만 쉼표를 얻는 것이 충분히 쉽습니다.힌트:여기에는 두 번째 for 루프 내부 항목 앞에 쉼표를 인쇄하고, 내부 for 루프에 대해 반복하는 항목 수를 줄이고, 내부 for 루프 바로 앞과 뒤에 각 행 특수의 첫 번째 및 마지막 사례를 인쇄하는 작업이 포함됩니다. 각기.아마도 그것을 설명하는 것이 더 어려울 것입니다.
여기에 참조가 있습니다 C 스타일 파일 I/O의 경우 여기 튜토리얼이 있습니다.
다른 팁
저장중인 데이터 유형에 대해 알지 못하면 이것을 매트릭스로 저장하겠다고 말할 것입니다.요소를 분리하는 구분 기호를 선택해야합니다 (탭 또는 공간은 각각 일반적인 선택, 일명 ','TSV '및'CSV '이며, 행 끝을 표시 할 무언가 (새로운 줄은 여기에서 좋은 선택입니다).
로 저장된 파일이 같은 것처럼 보일 수 있습니다 :
10 162 1 5
7 1 4 12
9 2 2 0
.
첫 번째 줄에있는 일부 메타 데이터를 갖는 형식을 정의 할 수도 있습니다. 메모리를 미리 할당하려는 경우 문자 인코딩과 같은 다른 정보와 함께 행과 열 수는 유용 할 수 있습니다.간단하게 시작하고 필요에 따라 추가하십시오!