-2
注:我無法發佈任何代碼,因爲它是我正在執行的任務的一部分。當它作爲參數傳遞給方法時,從字符串中刪除空終止符,
現在,我有這樣的事情
int main(){
char buf[30];
// Code that reads input and assigns it to buf
// Adds null terminator to the end of the buf
foo(buf);
}
void foo(char * buf){
// Do something
}
然而,當我調試我注意到BUF的foo中的值具有字符串但不是空終止。我使用strcmp比較buf和foo()方法中的另一個字符串,我懷疑這是我的代碼中存在錯誤的原因。
任何想法爲什麼會發生這種情況? (對不起,我對C仍然很不好)
這沒有發生。其他事情正在發生。我們無法確定它是什麼,因爲您不會發布您的代碼。 –
您完全刪除了代碼中可能存在問題的部分。你用什麼來閱讀輸入?該方法是添加一個NUL終止字節(很多)嗎?還是您希望添加它?輸入讀取函數的返回值是多少?它是否返回讀取的字節數?也許它返回一個指向字符串中第一個字節的指針?考慮使用'buf [30] = {0}'初始化'buf'。另外,考慮檢查緩衝區溢出。 – Myst
你描述的是*非常*不太可能。如果''NUL'在'main'中終止,那麼在'foo'中它仍然是這樣,除非你有一些奇怪的緩衝區溢出問題。更可能的是,它從來沒有正確的'NUL'終止。你需要在'main'中提供實際的代碼,因爲這是問題所在。 – ShadowRanger