2014-10-10 5 views
0

파일에서 데이터를 가져 오는 일부 코드가 있습니다. 형식은 다음과 같습니다. 9/2d 0/1s. 파일에 여러 파일이있을 수 있지만 첫 번째 숫자를 가져 와서 추가 할 색인으로 설정해야합니다. 그런 다음 다음 숫자와 문자를 별도의 값으로 저장해야합니다. 여기에 몇 가지 코드가 있지만 잘 작동하지 않습니다.구문 분석 입력 및 struct 배열에 추가

struct matrix tokens[nbrState][12]; 
    int *num = 0; 
    int index = 0; 
    while ((ptr = fgets(buf, 256, fp)) != NULL){ 
      ptrToken = strtok(buf, "/"); 
      int count = 0; 
      for(int r = 0; r < 12; r++){ 
        if(count >= 3){ 
          ptrToken = strtok(NULL, " "); 
          index = atoi(ptrToken); 
          tokens[index][r].state = index; 
        } 
        count++; 
      } 
    } 

여기 내 업데이트 된 코드입니다. 그것은 더 나은 abit 작동합니다.

struct matrix tokens[nbrState][12]; 
    char *tok; 
    int index = 0; 
    int state = 0; 
    while((ptr = fgets(buf, 256, fp)) != NULL){ 
      ptrToken = strtok(buf, " "); 
      tok = ptrToken; 
      //index = strtok(tok, "/"); 
      for(int r = 0; r < 12; r++){ 
        index = atoi(tok); 
        state = atoi(ptrToken); 
        tokens[index][12].state = state; 
      } 
    } 
+0

예 모두 동일합니다. – user2835532

답변

0

while ((fscanf (fp, "%d/%d%c", &index, &separateInt, &separateChar) == 3) { 
    // use values as needed 
    tokens[index][11].state = sepatateInt; 
} 

이 루프는 형식과 일치하지 않는 파일에서 EOF 또는 입력 할 때까지 계속 시도 할 수 있습니다.

+0

정말 이것을 사용하는 것을 좋아하지 않습니다. 나에게 "호환되지 않는 포인터 유형에서 'fscanf'인수 1을 전달합니다."내 변수를 변경하여 작동 시키려고했지만 저를 좋아하지 않습니다. 또한이 "예상 된 '구조체 FILE * restrict'하지만 인수는 'char *'형식입니다." – user2835532

+0

한 가지 더. 나는이 오류 "변수 '토큰'세트를 사용하지만 사용하지 않는 계속"나는 내가 사용하는 거 알아하지만 그걸 없앨 수 없다. 구조체를 정의 할 때 typedef를 사용하고 있습니다. – user2835532

+0

아니, 만약 내가 그랬다면 나는 그들 모두를 주석 처리했다. – user2835532