2015-10-31 47 views
2

我正在學習MIPS,我想編寫一個程序,要求用戶輸入一個句子,然後在新行上打印出每個單詞。條件是當存在諸如',','','。',' - '之類的字符時,它應該轉到下一個數字或字母而不打印標點符號。查找MIPS程序集中的句子中的每個單詞

我發現很難從字符串中檢查每個元素,看它是分隔字符還是普通字符,然後打印出結果。有人可以解釋如何做到這一點,沒有太多的併發症? 任何幫助將不勝感激!

+0

你應該有一個字符串與所有的分隔符字符,並編寫一個例程,返回true,如果可以在該字符串中找到給定的字符。或者你可以有一個包含256個條目的表格,其中字符代碼將被用作索引,所以你應該將所有對應於分隔符的條目設置爲非零,其餘的條目設置爲零(反之亦然)。 – Michael

+0

感謝您的評論。如何在第一個選項中編寫例程?我需要儘可能簡單地做到這一點。 –

+1

你會如何在'C'中編寫程序?這通常是一個開始的好地方。 –

回答

0

你需要做的是寫一個字符串標記器。這通常是編寫包括編譯器在內的許多文本分析器的第一步。對於我的僞代碼,我假設用戶輸入的文本位於名爲「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 
} 
相關問題