0
引號的字符串我想用C讀取文件的這樣的內容:檢測具有的fscanf
foo="bar"
alice="bob"
fruit="pineapple"
而且我興趣與關鍵愛麗絲相關的具體價值,但周圍無報價。所以,我想要鮑勃。
所以,我寫了這樣的事情
編輯:添加關鍵的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從來沒有任何按鍵之間返回0,所以,表的比較和「愛麗絲」總是假的。我得到這個輸出:
foo=bar
alice=bob
fruit=pinneaple
=pineapple
還測試了每個鍵的長度,由strlen,它是正確的。除了最後一行,我得到了我期望的結果。所以,我不太明白...
這裏有什麼明顯的錯誤嗎?我試圖調試代碼,但我正在使用非常有限的目標系統(openwrt),並且我無法訪問gdb(實際上,代碼是在另一臺機器上交叉編譯的,因爲我的目標系統甚至沒有編譯器)。
任何幫助表示讚賞。
這可能會幫助你。 [Demo](http://regex101.com/r/wR5cQ3/12) – Braj
你可以打印出變量'key'和'value',看看他們真的是什麼。或者使用調試器並逐行執行並檢查這些變量的內容。 –
謝謝。這與http://www.regexr.com/類似。但我不確定經典正則表達式和scanf語法之間的差異。我確實做錯了什麼。 – jorgeas80