與C中的scanf("%s")
類似,如何讀取單詞(跳過空白並讀取字符,直至遇到空格)?Ada讀取一個字符串(相當於scanf%s)
1
A
回答
3
從標準輸入中讀取一個單詞。作爲函數書寫。 (未測試)。
function Next_Word return String is
package Latin_1 renames Ada.Characters.Latin_1;
subtype Whitespace is Character
with Static_Predicate => Whitespace in ' ' | Latin_1.HT;
use all type Ada.Strings.Unbounded.Unbounded_String;
Word : Ada.Strings.Unbounded.Unbounded_String;
Next : Character;
begin
Skip_Leading_Space:
loop
Ada.Text_IO.Get (Next);
exit when not (Next in Whitespace);
end loop Skip_Leading_Space;
Read_Word:
loop
Word := Word & Next;
Ada.Text_IO.Get (Next);
exit when Next in Whitespace;
end loop Read_Word;
return To_String (Word);
end Next_Word;
2
Skip_Leading_Space:
loop
Next := Ada.Text_IO.Get;
exit when not Next in Whitespace;
end loop Skip_Leading_Space;
Read_Word:
loop
Word := Word & Next;
Next := Ada.Text_IO.Get;
exit when Next in Whitespace;
end loop Read_Word;
2
要掃描,所以最好使用什麼是用於此目的的阿達標準庫提供。一名候選人是Ada.Strings.Fixed.Find_Token
。
with Ada.Strings.Fixed, Ada.Strings.Maps.Constants, Ada.Text_IO;
use Ada.Text_IO, Ada.Strings;
procedure Read_Word is
Text : constant String := Get_Line;
First : Positive;
Last : Natural;
White : Maps.Character_Set := Maps.To_Set (" ");
begin
Fixed.Find_Token
(Source => Text,
Set => White,
Test => outside,
First => First,
Last => Last);
Put_Line ("word is: " & Text (First .. Last) & '.');
end Read_Word;
相關問題
- 1. scanf(「%s%s」,緩衝區)不返回第二個字符串?
- 2. 如何打破一個字符串,使用與fgets讀(),使用的scanf(「%S」,..)
- 3. 使用scanf將字符串讀取到字符串數組中
- 4. 使用scanf函數讀取一個字符串,然後是整數,字符串讀取僅
- 5. scanf()在先前定義的字符串的第一個字符串爲null時不讀取輸入字符串
- 6. 無法讀取字符串和int在一排的scanf
- 7. 讀取一串字符串
- 8. Scanf一次請求兩個字符串
- 9. 一個字符串上的Scanf C++
- 10. 閱讀使用scanf()的一個特定的字符串
- 11. 閱讀C++字符串與scanf
- 12. Ç的scanf相當於
- 13. 尋找相當於scanf的
- 14. Ada字符串串聯
- 15. 當字符串相當於旋轉
- 16. 當從字符串讀取一個字節時,C#System.NotSupportedException
- 17. 讀取字符後忽略scanf()值
- 18. 將多個字符串作爲一個字符串讀取? C++
- 19. 將非ASCII字符輸入到scanf(「%s」)
- 20. 無法讀取第一個字符串
- 21. 如何讀取一個字符串?
- 22. ReadProcessMemory讀取一個空字符串
- 23. 從網頁讀取一個字符串
- 24. Ada與字符串切片
- 25. Ada字符串比較
- 26. Ada:字符串合法值?
- 27. scanf只有一個字符
- 28. 如何在C++中使用scanf()讀取字符串?
- 29. 使用scanf讀取整數或字符串
- 30. 使用scanf的讀取字符串,並通過/
標籤可以使代碼更清晰,而且顯然可以使用in,in/out和out參數來使其成爲一個過程。您也可以使其成爲函數,但取決於您使用的Ada修訂版本,您可能無法使用所有類型的參數傳遞模式。 –
我太老師了,第一次提供完整的解決方案。 ;-) –
我絕對不會放棄標籤,因爲它們使得源代碼更易於閱讀。 –