台灣最大程式設計社群網站
線上人數
1049
 
會員總數:241126
討論主題:186798
歡迎您免費加入會員
討論區列表 >> C/C++ >> 有關字串結束字元的問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
有關字串結束字元的問題
價值 : 100 QP  點閱數:222 回應數:4

樓主

Ivan Yo
門外漢
0 1
13 1
發送站內信

各位高手好,小弟首發貼文,有違規麻煩告知,謝謝
我有個 C 語言 的問題想請教
題目:輸入一個字串,將字串利用函數add10傳入會將字元+10,再將字串輸出
(裡用指標作答)
作答如下圖

我想請問為什麼會多一個字元?
這個字元是不是 Enter 的指令造成的呢?

謝謝

搜尋相關Tags的文章: [ 字串 ] , [ 字元 ] , [ 陣列 ] , [ 指標 ] ,
本篇文章發表於2017-06-22 22:05
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
下次請你發問將程式碼複製貼上上來,
別人才方便複製幫你測試,

你這是什麼版本?
我如果輸入這樣會無法編譯,
(因為應該回傳卻沒有回傳)

你要學一下怎麼除錯,
我測出來結果也跟你一樣,
我測到第四個字元是 10 ''
我不知道它怎麼出現的,不過有這個字元。

不過我如果改成 cin >> A 就不會有那個字元出現,
應該是fgets造成的
本篇文章回覆於2017-06-22 23:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

彩虹
檢舉此回應
To #Ivan Yo

我覺得是你環境或版本的問題喔

你的程式碼我放在我的三台電腦下跑都沒問題喔
另外也透過兩個線上編輯測試後也不會有最後那個符號出現

compile_c online
https://www.tutorialspoint.com/compile_c_online.php

C++ shell
http://cpp.sh/


你換個環境試試看
或者重新 new 一個檔案出來


另外,下次可以的話,請將程式碼貼上來,而不是使用圖片,這樣子我們要手打程式碼...






本篇文章回覆於2017-06-23 00:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

淺水員
檢舉此回應
關於fgets的說明可以參考:http://www.cplusplus.com/reference/cstdio/fgets/
裡面有提到:
A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.

所以真的會在後面多加一個換行字元

再來請了解 ASCII 碼:https://zh.wikipedia.org/wiki/ASCII
不是每個字元都可以顯示在螢幕上。
所以這題我會建議只對ASCII 32~126 的字元做處理
這些字元加10超過126的話會回到32、33…等數字(有點像是"旋轉")

下列程式碼提供參考:


另外你原程式碼,main依照宣告應該要回傳整數,add10依照宣告應該要回傳字元。
所以main最後應該要多一行
return 0;
而add10不想回傳的話,請宣告成
void add10(char* ptr);
本篇文章回覆於2017-06-23 01:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Ivan Yo
檢舉此回應
謝謝各位大大的建議和提醒

抱歉,我下次會記得貼程式碼

我的開發環境是用 Dev C++ 檔名是.c
本篇文章回覆於2017-06-23 10:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.