마지막 질문입니다. 나는 투쟁마다 한 번 이상 게시하지 않으려 고 노력한다. ...C의 입력 파일에서 특정 구문 읽기
이것은 조금 더 간단하다.
첫 번째 8 줄에 일련 번호가 배열 된 txt 파일이 있습니다. 뒤에 나오는 모든 줄에는 "BUY ITEM"이나 "AWARD ITEM"과 같은 특정 구문이 있고 정수가옵니다 (여러 구가 있지만 한 가지만 염두에두고 있습니다). 기본적으로 for 또는 while 루프를 사용하여 문서의 문구를 검색하고 문구 끝으로 포인터를 설정 한 다음 구문 오른쪽에있는 정수를 fscanf로 설정하려고합니다. 내가 가지고있는 유일한 문제는 특정 문구의 끝에 포인터를 가져 와서 그 번호를 읽는 것입니다. 문구가 다른 줄에 반복된다는 사실뿐만 아니라 한 번에 값을 모두 가져오고 싶지 않습니다.
은 내가 간단한
while (!feof(//function for reading phrase)) {
fscanf("%d", &value);
//rest of function
을 할 수있는 확신 그리고 그렇게 될 것입니다. 하지만 난 fseek과 fget 시도하고 아무것도 정말 내가 어디로 갈 수있는 미리 설정된 위치가 필요없이 그것을 필요로하는 위치에 대한 포인터를 얻을 수있었습니다. 입력 파일은 매번 다를 것이기 때문에 나는 단지 1024 칸 아래로 내려가라고 말할 수는 없다. 이 점에 대해 어떻게 생각 하느냐는 확실하지 않습니다 ...
또한 아래는 입력 파일의 예입니다.
75 75 908
10 10
18 23.10 10.09
70 5 15
8 100 20 28.99
30 40 50 60
4 6 8 8 5 5 5 6 7 10
10
BUY ITEM 8
BUY ITEM 10
AWARD ITEM 7
BUY ITEM 1
BUY ITEM 3
AWARD ITEM 9
BUY ITEM 7
RETURN ITEM 8
누구에게 도움을 주셔서 감사합니다.
지정된 파일 형식이 없으면 찾을 때까지 모든 줄을 읽어야합니다. 그것은 그 이상으로 복잡하지 않습니다. "포인터 설정"과 "숫자 읽기"보다는 전체 줄을 읽고, 일치하는 항목이 있으면 숫자를 추출하십시오. –
그리고 일치하는 경우 어떻게 각 줄을 읽고 번호를 추출합니까? 그게 fseek 일종의 거래 같은데? – Darksider13
아니요,'fgets()'를 사용하여 전체 줄을 얻은 다음'fscanf()'또는'strtol()'또는 그 줄을 따라 무언가를 가져 와서 번호를 가져옵니다. 파일이 항상이 형식을 따르고 행이'BUY ITEM'으로 시작하여 공백이 오는 경우, 문자열의 10 번째 문자에서 시작되는 숫자를 알 수 있습니다. –