我能解決這個問題,感謝所有幫助我解決問題的人。用另一個字符串替換字符串中的值
回答
您可以使用
sprintf(word, "%s ", dictn);
如果您的代碼正在與printf的應該與sprintf的工作,只要你不溢出「詞」,包括NULL終止,所以您可能必須調整「字「如果它小於dictn。
謝謝,我會盡力的!但是,你能解釋一下sprintf做什麼?它是否與fprintf相同? – user3096716
sprintf的工作方式與printf類似,但是它會打印到字符串而不是標準輸出(在本例中打印到名爲「word」的字符串)。很高興看到「單詞」和「單詞」的聲明。處理您遇到的問題最安全的方法是逐字閱讀空格,製表符或換行符,因爲您從文件中讀取的方式有可能會溢出「word」或「dictn」,如果用戶爲您的程序提供一個文本文件,其中包含一個非常長的不間斷字符序列,您的程序會崩潰或產生一些隨機行爲 –
首先,我假設你已經創建了具有足夠大小的數組word
和dictn
以保存任何文件的最大長度字符串。
第一次故障:
在您創建循環,i
代表在輸入文件中的字符串的數量和j
表示辭典弦數。 word
是您的輸入字符串變量,dictn
是您的字典字符串變量。但是你想要檢索和修改單詞的第i個或第d個單詞的第j個字符。這可能會導致錯誤,因爲可能會出現這樣的情況:
假設有inp
文件有10個單詞,dictn
有100個單詞。並且在您的循環中,i
的值爲8,而j
的值爲88.對應這些i
和j
的值,字符的字符串值爲apple
,dictn
的字符串值也爲apple
。所以這意味着apple
是輸入文件的第8個單詞和詞典文件的第88個單詞。如果滿足其中一個條件,編譯器會嘗試應用word[i]=dictn[j];
之類的語句。這個例子意味着word[8] = dictn[88];
。但是這兩個字符串都有apple
作爲只包含5個字符的值!這會導致錯誤,因爲您試圖檢索長度爲5的字符串的第88個字符並將其分配給5長度字符串的第8個字符。所以你的代碼是錯誤的,它只適用於一些罕見的情況。
第二次故障:
我假設你想讀整部字典文件中輸入文件的每一個字,但你將能夠讀取它的輸入文件,因爲你不打開它的唯一的第一個字或在讀完整本字典後,在字典文件的開頭設置位置指示符。
三錯:
你的第一個if語句將永遠不會達到假設你已經創建len1
和len2
變量爲整數。因爲在你的if語句,有小數數目的乘積的整數,將返回0,結果,自fscanf()
忽略空格,len1
和len2
將至少爲1
第四故障:
同樣你的else if
語句永遠不會被達到,因爲如果一個字符串與另一個字符串具有相同的值,那麼它們的第一個字符也將相等,並且你的if語句在你比較它們的第一個字符時也將被接受。
事實上,我會寫代碼解決方案,但首先你需要正確的事情了其在邏輯上是錯誤的,因爲我不知道你真正嘗試通過代碼來實現 - 只是因爲我評論充滿假設 - 。但我可以爲您提供一些指導原則:
- 將您
len1
和len2
變量從int
到float
和投值,其返回從strlen()
功能float
。 - 重新打開您的
dict
文件進行外部循環的每次迭代。 (並且不要忘記不要關閉它)。 - 要改變你的
inp
文件,你可以使用一個fpos_t
類型的變量來跟蹤你inp
文件的位置指示器(fgetpos()
獲得當前位置和fsetpos()
改變位置fpos_t
變量的值,你可以搜索他們。)和鍵入單詞fprintf()
或fputs()
到該位置以更改該字符串。
- 1. 用另一個字符串替換字符串中的字符?
- 2. 用mysql中的另一個字符串替換字符串
- 3. 用另一個字符串替換字符串的一部分
- 4. 用另一個字符串替換字符串的第一個字符
- 5. 替換字符串的子字符串用另一個字符串
- 6. 替換字符串轉換成另一個字符串
- 7. 用C語言中的另一個字符串替換字符串字符
- 8. 無法用另一個字符串替換字符串中的字符
- 9. Sed則試圖用另一個字符串替換字符串
- 10. 大熊貓:用另一個字符串替換字符串
- 11. 需要用另一個字符串替換部分字符串
- 12. sed - 用另一個字符串替換兩個字符串之間的字符
- 13. 替換字符串用另一個子
- 14. 用另一個替換字符串
- 15. 如何從另一個字符串替換字符串?
- 16. 用另一個字符替換字符串中的字符並切換回
- 17. 用一個字符替換字符串中的整個字符
- 18. 用一個字符替換字符串中的多個字符
- 19. 用android中的字符串中的另一個字符替換字符?
- 20. 用另一個字符串中的每個字符替換字符串中的字符
- 21. 用另一個字符串替換一個字符串的內容?
- 22. 如何用R中列中的另一個字符串替換字符串?
- 23. 從另一個字符串中的一個字符串替換匹配項
- 24. 使用awk,如何用另一個字符串替換一個字符串?
- 25. 字符串中的字符串替換
- 26. 字符串替換多個字符串
- 27. 用一個StringBuffer子字符串替換一個子字符串
- 28. 用另一個模型值替換模型中的字符串
- 29. 從一個陣列替換字符到另一個字符串
- 30. 替換一個字符串。
你說的問題是,當你有要使用的代碼時,代碼不會編譯。難道你不認爲提供不編譯的代碼以及編譯嘗試時提供的錯誤輸出是一個超級想法嗎? – mah
對不起,我添加了其他部分。這是我第一次使用這個網站。 – user3096716
當你嘗試編譯時,你得到的錯誤是什麼?當涉及到複製字符串時,你會遇到一個問題,「word [i] = dictn [j]'只會分配指針,而不是複製單詞中的實際字符。 – Macattack