와 인용 문자열을 감지 :나는 C에서이 같은 파일의 내용을 읽을 수 fscanf
foo="bar"
alice="bob"
fruit="pineapple"
을 내가 키 앨리스과 관련된 특정 값에 관심이 있지만, 주변 따옴표없이 . 그래서, 나는 원한다 bob. 이
EDIT 같은
그래서, 내가 작성한 뭔가 : 키의 추가의 printf/값
char key[20];
char value[20];
char output[20];
memset(key, 0, 20);
memset(value, 0, 20);
while(fscanf(fd, "%19[^=]=\"%19[^\"]\"", key, value) != EOF) {
printf("%s=%s", key, value);
if (strcmp(key, "alice") == 0) {
memset(output, 0, 20);
strncpy(output, value, 20);
break;
}
memset(key, 0, 20);
memset(value, 0, 20);
}
이 문제는 strcmp와 결코 아무 키나 사이에, 그래서 comparation를 0을 반환하지 않습니다 "앨리스"는 항상 거짓입니다. 그리고 나는이 결과를 얻고 있습니다 :
foo=bar
alice=bob
fruit=pinneaple
=pineapple
또한 strlen으로 각 키의 길이를 테스트했는데 정확합니다. 마지막 줄무늬와는 별도로 내가 기대하는 것을 얻는다. 그래서, 나는 정말로 이해하지 못합니다 ...
여기에 명백한 오류가 있습니까? 코드를 디버깅하려고하지만 대상 시스템이 매우 제한적이며 (openwrt) gdb에 액세스 할 수 없습니다 (실제로 코드는 다른 컴퓨터에서 크로스 컴파일됩니다. 컴파일러도 없다).
도움을 주시면 감사하겠습니다.
도움이 될만한 정보가 있습니다. [데모] (http : //regex101.com/r/wR5cQ3/12) – Braj
변수'key'와'value'를 출력하여 실제로 무엇인지 확인할 수 있습니다. 또는 디버거를 사용하여 한 줄씩 단계별로 실행하고 해당 변수의 내용을 확인하십시오. –
감사합니다. 이는 http://www.regexr.com/과 비슷한 것입니다. 하지만 고전 regexp와 scanf 구문의 차이점에 대해서는 잘 모르겠습니다. 나는 틀린 일을 확실히하고있다. – jorgeas80