2
我正在學習MIPS,我想編寫一個程序,要求用戶輸入一個句子,然後在新行上打印出每個單詞。條件是當存在諸如',','','。',' - '之類的字符時,它應該轉到下一個數字或字母而不打印標點符號。查找MIPS程序集中的句子中的每個單詞
我發現很難從字符串中檢查每個元素,看它是分隔字符還是普通字符,然後打印出結果。有人可以解釋如何做到這一點,沒有太多的併發症? 任何幫助將不勝感激!
我正在學習MIPS,我想編寫一個程序,要求用戶輸入一個句子,然後在新行上打印出每個單詞。條件是當存在諸如',','','。',' - '之類的字符時,它應該轉到下一個數字或字母而不打印標點符號。查找MIPS程序集中的句子中的每個單詞
我發現很難從字符串中檢查每個元素,看它是分隔字符還是普通字符,然後打印出結果。有人可以解釋如何做到這一點,沒有太多的併發症? 任何幫助將不勝感激!
你需要做的是寫一個字符串標記器。這通常是編寫包括編譯器在內的許多文本分析器的第一步。對於我的僞代碼,我假設用戶輸入的文本位於名爲「s」的變量中。
int i = 0;
int l = strlen(s);
while(i < l)
{
int start = i; // Will need the start address later
// Scan forward in 's' until a delimiter is found
while(i < l && s[i] != ',' && s[i] != '.' && s[i] != ' ' && s[i] != '-')
{
i += 1;
}
if(i == start)
{
i += 1;
continue; // Multiple delimiters
}
s[i] = 0; // Replace the delimiter with null.
print &s[start]; // Standard out
i += 1; // Move to the next character
}
你應該有一個字符串與所有的分隔符字符,並編寫一個例程,返回true,如果可以在該字符串中找到給定的字符。或者你可以有一個包含256個條目的表格,其中字符代碼將被用作索引,所以你應該將所有對應於分隔符的條目設置爲非零,其餘的條目設置爲零(反之亦然)。 – Michael
感謝您的評論。如何在第一個選項中編寫例程?我需要儘可能簡單地做到這一點。 –
你會如何在'C'中編寫程序?這通常是一個開始的好地方。 –