1

我正在寻找一种方法来迭代从getchar()C 中的函数收集的字符串中的每个单词。我不能使用指针。句子中的每个单词都会对其进行处理,但不应受到其他单词的影响,我需要一种访问字母的方法,例如即使我在第三个单词,buffer[k]如果k = 0会给出第一个字母第三个字。

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

    for (i = 0; i < 32; ++i)
    {
        character = getchar ();
        buffer[i] = character;
    }
}
4

3 回答 3

1

没有指针有点困难(你正在传递数组,这些也是指针)。但是您可能根本不需要分配内存。看看strtok

澄清:

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

所以,记住指针和数组是不一样的,你应该了解它们的区别,但现在不要担心。

于 2012-10-24T22:18:33.933 回答
1

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

首先,读取字符串:

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

您计算所有单词,以空格分隔。

于 2012-10-24T22:23:09.380 回答
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;
    }
} 
于 2012-10-24T22:25:22.183 回答