Arrays 在MIPS汇编中查找句子中的每个单词
我正在尝试学习MIPS,我想写一个程序,要求用户输入一个句子,然后在新行上打印出每个单词。条件是,当存在诸如“,”,“,”,“-”等字符时,它应该转到下一个数字或字母,而不打印标点符号 我发现很难检查字符串中的每个元素,看它是分隔字符还是普通字符,然后打印出结果。有人能解释一下如何做到这一点而不太复杂吗?Arrays 在MIPS汇编中查找句子中的每个单词,arrays,string,assembly,mips,Arrays,String,Assembly,Mips,我正在尝试学习MIPS,我想写一个程序,要求用户输入一个句子,然后在新行上打印出每个单词。条件是,当存在诸如“,”,“,”,“-”等字符时,它应该转到下一个数字或字母,而不打印标点符号 我发现很难检查字符串中的每个元素,看它是分隔字符还是普通字符,然后打印出结果。有人能解释一下如何做到这一点而不太复杂吗? 任何帮助都将不胜感激 您需要做的是编写一个字符串标记器。这通常是编写许多文本分析器(包括编译器)的第一步。对于我的伪代码,我假设用户输入的文本位于名为“s”的变量中 inti=0; int l
任何帮助都将不胜感激 您需要做的是编写一个字符串标记器。这通常是编写许多文本分析器(包括编译器)的第一步。对于我的伪代码,我假设用户输入的文本位于名为“s”的变量中
inti=0;
int l=strlen(s);
而(i
您可以拥有一个包含所有分隔符字符的字符串,并编写一个例程,如果在该字符串中可以找到给定字符,则该例程将返回true。或者您可以有一个包含256个条目的表,其中字符代码将用作索引,因此您可以将与分隔符对应的所有条目设置为非零,将其余条目设置为零(反之亦然)。谢谢您的评论。如何像第一个选项那样编写例程?我需要做得尽可能简单。你将如何用C
编写程序?这通常是一个好的开始。
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
}