使用ANSI C中的指针标记字符串

时间:2012-06-22 04:17:37

标签: c string tokenize ansi

这是在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行的文件输入。

2 个答案:

答案 0 :(得分:1)

伪代码:

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识别为一个字)。

答案 1 :(得分:0)

因为这里的功课是你可能需要的一部分:

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

你需要在一个循环中,并且必须考虑如何移动到下一个单词,并检查输入的结束。