如何迭代由空格分隔的每个单词?

时间:2012-10-24 22:15:44

标签: c string ansi

我正在寻找一种方法来迭代从C中的getchar()函数收集的字符串中的每个单词。我不能使用指针。句子中的每个单词都会对其做一些事情,但不应受其他单词的影响,我需要一种方法来访问这些字母,例如即使我在第三个单词buffer[k] if {{ 1}}会给出第三个单词的第一个字母。

k = 0

3 个答案:

答案 0 :(得分:1)

没有指针就很难(你传递数组,那些也是指针)。但你可能根本没有分配内存。看看strtok

澄清:

正如@EdS在下面的评论中指出的那样,数组和指针不是同样的东西。但是,在许多情况下,它们几乎是相同的东西。将数组传递给函数并将指针传递给函数几乎总是相同的 - 实际上。

所以,请记住指针和数组不一样,你应该了解其中的差别,但不要担心它。

答案 1 :(得分:1)

你想读一个书写的字符串行并计算单词,这是对的吗?

首先,阅读字符串:

char* str = gets(NULL);
int i = 0;
char* tok = strtok(str," ");
while(tok != NULL) {
    i++;
    tok = strtok(NULL, " ");
}

你计算所有单词,用空格分隔。

答案 2 :(得分:1)

通常你会使用strchr在字符串中查找空格,但是因为你不能使用指针:

void read_line (char buffer[]) 
{ 
    char character; 
    int i = 0; 

    for (i = 0; i < 32; ++i) 
    { 
        character = getchar (); 

        if (character == '\n')
            break;

        buffer[i] = character; 
    } 

    i = 0;

    while (buffer[i] != '\n')
    {
        for (; buffer[i] != ' '; ++i)
            // each iteration of this loop will be on the same word

        ++i;
    }
}