2016-03-02 76 views
-1

我想做一些編程作業,但我不知道如何顯示C字符串的最後N個字符。這是我迄今爲止的嘗試。我也應該詢問字符的數量並驗證它。任何幫助將不勝感激。如何顯示C字符串的最後N個字符?

void choice_4(char str[]) { 
    int characters; 
    cout << "How many characters from the end of the string do you want to display? "; 
    cin >> characters; 
    if (str[characters] != '\0') 
     cout<<str.Substring(str.length - characters,characters) 
} 
+3

這是C或C++的問題嗎?另外,C字符串不具有成員函數。 – melak47

+0

不想給你一個答案,但這裏是我認爲有用的東西:http://www.cplusplus.com/reference/cstring/strlen/ – mascoj

+0

你可以使用C字符串函數來查看C字符串或你可以從C字符串中創建一個C++ std :: string,然後你可以使用std :: string成員函數。 –

回答

1

像往常一樣,作業問題,我不會給一個解決方案,但一些提示。

  • 我假定通過「驗證」您的意思是檢查字符串是否足夠長。例如,不能顯示只有7個字符長度的字符串的最後12個字符。但是,您當前嘗試查看字符串的第 n字節無法正常工作。如果字符串短於 n字節,則會將其索引超出範圍並調用未定義的行爲。如果時間更長 - 這是完全有效的,事實上,除了微不足道的情況,情況將會如此 - 您的測試錯誤地返回請求的長度無效。
  • 你應該做的,而不是被計算字符串的長度ñ,然後測試是否ňñ。您可以使用標準庫函數std::strlen來獲取NUL終止字符數組的長度。或者你可以自己循環並計算你看到多少個字節,直到第一個NUL字節爲止。
  • C風格的字符串只是一個指向內存中帶有隱式約定的字節的指針,任何字節直到後面的第一個NUL字節都屬於該字符串。因此,如果將 m N添加到指針,則會得到從第012位(從零開始)的字節開始的子字符串。
  • 因此,爲了獲得子串與ň字符的字符串的最後ñ人物,你如何確定

順便說一句:一個NULL字節是爲整數值0一char你可以編碼它'\0'(像你一樣),但0工作完全正常了。

相關問題