繁体   English   中英

在ANSI C中使用指针对字符串进行标记

[英]Tokenize Strings using Pointers in ANSI C

这是在Ansi C中。我得到一个字符串。 我应该创建一个方法,该方法返回一个字符指针数组,该数组指向所述字符串的每个单词的开头。 我不允许使用Malloc,而是告诉我输入的最大长度为80。

另外,在任何人因不搜索论坛而激怒我之前,我不能使用strtok :(

char input[80] = "hello world, please tokenize this string"

该方法的输出应包含6个元素;

output[0] points to the "h",
output[1] points to the "w",

等等。

我应该如何编写方法?

另外,我需要一种类似的方法来处理最大110行的文件输入。

伪代码:

boolean isInWord = false
while (*ptr != NUL character) {
   if (!isInWord and isWordCharacter(*ptr)) {
       isInWord = true
       save ptr
   } else if (isInWord and !isWordCharacter(*ptr)) {
       isInWord = false
   }
   increment ptr
}

isWordCharacter检查字符是否为单词的一部分。 根据您的定义,它只能是字母字符(将part-time识别为2个单词),也可以包括- (将part-time识别为一个单词)。

因为这是家庭作业,所以这是您可能需要的一部分:

char* readPtr = input;
char* wordPtr = input;
int wordCount = 0;
while (*readPtr++ != ' ');
/* Here we have a word from wordPtr to readPtr-1 */
output[wordCount++] = /* something... :)  */

您将需要一个循环,并且必须考虑如何移至下一个单词,并检查输入是否结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM