2013-05-16 2 views
3

당연히 지금 당황 스럽네요. 나는 컬럼 형식으로 이런 식으로 진행되는 텍스트 파일을 읽으려고합니다. 내가하고 싶은 것은 배열에 숫자, 문자 및 문자열 열을 별도로 저장하는 것입니다.sscanf 또는 fscanf를 사용하여 파일에서 문자열을 읽는 방법은 무엇입니까?

[Numbers] [Characters] [Strings] 

이제 숫자와 문자 열을 자체 배열로 읽는 방법을 알아 냈지만 문자열 열로는 그렇게 할 수 없습니다. 적어도 내가 사용하고자하는 명령 인 fscanf 또는 sscanf이 아닙니다.

fscanf 또는 sscanf을 사용하여 정리 된 파일을 어떻게 읽을 수 있습니까? (나는 textscan에 대해 알고, fscanf 나 sscanf를 사용하여 이것이 가능한지 알고 싶습니다.)

여기에 약간의 코드를 추가하겠습니다.

fid = fopen('Data.txt', 'w+'); 
i = 1; 
while ~feof(fid) 
    line = fgets(fid); 
    M(i) = sscanf(line, '%d, %c, %s', [3,inf]; 
    i = i+1; 
end 

이 실행되지만 M은 데이터 파일의 숫자의 첫 번째 열로 구성된 행 벡터로 나오는 끝 :이 연구하는 동안 나는 밖으로 시도 그래서 다음. 그것은 단지 문자와 문자열의 존재를 완전히 무시합니다. 이제

는 sscanf를 기능에 대한 이해가 나는 숫자에 불과 열로 구성된 데이터의 샘플 세트를 들면 다음

fid = fopen('Data.txt', 'w+'); 
    i = 1; 
    while ~feof(fid) 
     line = fgets(fid); 
     M(i) = sscanf(line, '%d, %d, %d', [3,inf]; 
     i = i+1; 
    end 

을 시도 얻을 수 있습니다. 덧붙여 말하자면 이것은 이전과 똑같은 일을합니다. 단지 데이터의 첫 번째 숫자 열을 읽고 종료합니다. 그래서, 나는 sscanf, feof 또는 fgets를 올바르게 사용하는 법을 모릅니다. 그래서 여기서도 도움을받을 수 있습니다.

그리고 숫자의 열을 읽으려고하는 것은 fscanf를 사용하면 사소하지만, 여기서 sscanf와 fgets를 이해하려고합니다.

답변

2

당신이 찾고있는 기능은 오히려 그것은 당신이 한 번에 전체 파일을 읽을 수 있도록하고 당신이 읽고있는 각 열의 형식을 지정 textscan

될 것이다. 귀하의 경우에는

,이 같은되어야합니다 : 우리는 텍스트 파일의 정확한 형식을 모르는 것처럼

fileID = fopen('myfile.txt'); 
C = textscan(fileID, '%f %c %s'); 
fclose(fileID); 
celldisp(C) 

을, 당신은 아마 형식 문자열을 조정할해야합니다.

형식 사양에 따라 파싱 된 파일의 내용을 가진 셀 배열을 가져옵니다.

Matlab의 문서는 가능성을 the format specification에 자세히 설명하고 좋은 예를 제공합니다.

+0

맞아, 나는 textscan에 대해 알고 있습니다. 어쩌면 내가 살펴볼 것이지만, 명령은 나의 지식과, matlab에 존재하기 때문에 나는 이것을 꺼려한다. 이것은 내가 이것을하기를 원하는 유일한 것이 아닐 수도있다. 필자는이 내용을 살펴보고 fscanf 또는 sscanf를 사용할 수 있는지 알고 싶습니다. 그리고 제가 말한 것은 실제로 텍스트 파일의 형식입니다. 숫자, 문자 및 문자열의 긴 열 (천 또는 그 정도 값) 열. fscanf 및 sscanf를 사용하여이 작업을 수행하는 방법을 알아 보려면 여러 가지 점이 궁금합니다. 어쩌면 바보 같지만 ... 알고 싶습니다. – GeneralPancake

+0

글쎄, 텍스트 스캔이 완벽하게 작동한다는 것을 인정해야합니다. 솔직히 말하면, 실제로 나를 자극합니다. 나는 정말로, 정말로, 이것을하기 위해 sscanf 및/또는 fscanf를 사용하는 방법을 알고 싶다. 그것은 가능해야하며, 나는 그것이 얼마나 고통 스러울지를 정말로 신경 쓰지 않습니다. – GeneralPancake

관련 문제