我正在解析文本文件,當遇到單詞.word
時,我想抓住該行的其餘部分。這是我到目前爲止:指向字符串的指針 - C
char *word_ptr;
if (strstr(token, ":")){
// Some code
}
else if ((word_ptr = strstr(token, ".word"))) {
char *string_wanted = word_ptr + 6;
printf("Rest: '%s'\n", string_wanted);
}
string_wanted
打印不正確。在else-if
聲明中分配word_ptr時,我的用法是否正確? string_wanted
沒有打印出任何東西。當我添加一個7而不是6時,它會打印出'ize'。我在文本文件中保留了字的大小,但現在我刪除了它,刪除了該文件並重新創建了它,並完成了一個乾淨的構建,單詞「ize」仍顯示出來!它在文件中根本不存在,所以它來自哪裏?我非常沮喪,文件中不再存在「大小」這個詞。
以下是文件中查找內容(當我有「IZE」字):
array: .word 0:10
array_size: .word 10
現在我只是刪除第二行,所以它是: array: .word 0:10
爲什麼不word_ptr打印出0:10當我添加一個6呢?我很確定word_ptr指向.word,因爲當我打印它時,它會打印.word。標記行時,array:
正在標記化,所以我知道它正在到達那裏。
有什麼建議嗎?
感謝您的幫助。
你嘗試過在strstr上測試NULL嗎? – Serdalis
我爲什麼要測試?如果代碼塊不是空的,它只會執行嗎? – darksky
這是真的,這個代碼的唯一問題是,它永遠不會到別人如果(與您提供的測試用例),當我修復了我的程序中的一切工作,因爲它應該,請張貼完整的代碼,代碼你發佈了沒有問題。 – Serdalis