2011-02-02 7 views
1

처리중인 데이터 파일을 파일의 각 행에 대해 하나의 char 배열로 처리하고 싶습니다. 개별 라인을 처리합니다. 그러나 나는 이것을 어떻게하는지 확신 할 수 없다.C에서 문자열에서 데이터 읽기 (scanf와 유사)

내가 좋아하는 각각의 라인을 읽을 : 그래서

I는 % D \ t % D \ t % D \ t % D \ t % D로 포맷 된 각 라인의 데이터를 판독 할 필요
/* Read the whole file into an array */ 
char read_lines[FILE_LENGTH][FILE_WIDTH]; 
for(i=0;i<FILE_LENGTH;i++) { 
    fscanf(data_file, "%[^\n]", read_lines[i]); 
    fscanf(data_file, "%[\n]", dump); 
} 

그리고 scanf 함수로 특정 변수를 읽는 방법을 잘 모르겠습니다. 나는 fscanf()가 파일에서 읽고 scanf()가 사용자 입력에서 읽음을 알고, 변수에서 읽는 함수가 있습니까? 내가 파이썬 배경에서와 파이썬에 와서

, 방금 다음 코드를 사용합니다 :

read_lines = open('file.txt').readlines() 
for line in lines: 
    i = lines.index(line) 
    first[i], second[i], third[i], forth[i], fifth[i] = line.split('\t') 
정말 C.에서 해당 작업을 수행하는 방법을 참조 I 연구의 공정한 조금을 한 적이 없습니다

하지만 아무 것도 찾을 수 없었습니다. 어떤 도움을 주시면 감사하겠습니다!

감사합니다.

답변

2

아마 sscanf을 확인하십시오. 그것은 마치 사촌 인 것처럼 scanffscanf이지만 대신 문자열을 사용합니다. 위의 링크에서 찍은 사진입니다.

sscanf를 함수 printf와 비슷한 방식 및 관련 함수에서 다음 입력을 읽을에서 문자열을 수락 이것은 템플릿 문자열 및 관련 인수 시리즈를 받아 들인다. printf와 같은 변환 지정자를 사용하여 입력을 읽는 문자열에 템플릿 문자열을 일치 시키려고합니다.

+0

아! 고마워, sscanf 내 검색에 올라 오지 않는 것, 이것은 정확히 내가 무엇을 필요합니다. – Durand

0

당신은 strtok에 함수를 사용하여 문자열을

예컨대 분할 [맨 페이지 읽기] http://www.gnu.org/s/libc/manual/html_node/Finding-Tokens-in-a-String.html

+0

고마워, 이건 아주 유용 할거야. 미래에는 이걸 쓸거야.하지만 C#에서는 sscanf()를 사용하는 것이 파이썬에서 split()을 사용하는 대신에 더 간단한 옵션 일 것이라고 생각한다. – Durand

+0

@Durand 파이썬에서 비슷한 일을 할 수 있습니다 - 또한 파이썬 코드는 자동으로 필드를 정수로 해석합니다. –

+0

예 : first [i], second [i], third [i ], 앞뒤 [i], 다섯째 [i] = [int (i) for line.split ('\ t')] – Durand