는 다른 방법 (예를 들어, 당신은 플렉스를 사용할 수 있습니다)이 있습니다,하지만 난 sscanf
의 약간 더 나은 사용이 가장 나을 생각 :
char buffer[256];
char value[128];
fgets(buffer, sizeof(buffer), fp);
if (1==sscanf(buffer, "x=%127s", value))
// we read a value -- now use it however needed.
편집 : 여기에 기본적인 아이디어는 매우 간단하다. fgets
과 같이 전체를 읽는 것으로 시작합니다. 그런 다음 sscanf
을 사용하여 x=<whatever>
와 (과) 일치하는 라인을 찾으십시오. 우리가 그것을 발견하면, 우리는 우리가 소중히 여기는 가치가 있습니다. 찾지 못하면 sscanf는 변환 한 항목 수를 반환하므로 0을 반환하고 지정된 x=
과 일치하지 않으면 아무것도 변환하지 않으므로 sscanf는 0을 반환하고 우리는 그 라인이 일치하지 않는다는 것을 압니다.
편집 2 : 다음은 파일에서 데이터를 읽는 작은 데모 프로그램, 그리고 형태 x=<whatever>
에 따라 라인의 값을 출력, 이전과 x
후 허용 공백과 =
:
#include <stdio.h>
int main() {
FILE *infile = fopen("Somefile.txt", "r");
char buffer[256];
char value[128];
while (fgets(buffer, sizeof(buffer), infile))
if (1 == sscanf(buffer, " x = %127s", value))
printf("Value = %s\n", value);
return 0;
}
I 입력으로이 그것을 테스트 :
some junk
#a comment
a = 1 ; a couple other variables.
b = 2
x = 3
x = 4
x=5
내가 가진 결과였다
Value = 3
Value = 4
Value = 5
답장을 보내 주셔서 감사합니다. 답변을 자세히 설명해 주시겠습니까? – Nimit
좋습니다. 그러나 파일 데이터를 버퍼에 저장하는 것이 좋습니까? 파일 조작으로 위의 예를 제게 제공 해주시겠습니까 ?? 고마워. – Nimit
''x = % 127s "'와 같이 형식 문자열에서'='주위에 공백을 두는 것이 좋습니다. 이렇게하면 사용자는 파일에서'= '주위에 공백을 둘 수 있습니다. –