C语言 如何迭代每个由空格分隔的单词?[关闭]

lnlaulya  于 2023-03-22  发布在  其他
关注(0)|答案(3)|浏览(111)

这个问题不太可能帮助任何未来的访问者;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况有关,而这些情况通常不适用于Internet的全球用户。要帮助更广泛地应用此问题,请访问visit the help center
10年前关闭了。
我正在寻找一种方法来迭代从C中的getchar()函数收集的字符串中的每个单词。我不能使用指针。句子中的每个单词都将对其进行一些操作,但不应该受到其他单词的影响,我需要一种方法来访问字母,例如即使我在第三个单词处,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;
    }
}
u0njafvf

u0njafvf1#

通常你会使用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;
    }
}
flvlnr44

flvlnr442#

没有指针有点困难(你在传递数组,它们也是指针)。但是你可能根本不需要分配内存。看看strtok
澄清:
正如@EdS在下面的评论中指出的,数组和指针不是一回事。然而,在许多情况下,它们几乎是一样的。将数组传递给函数和将指针传递给函数几乎总是一样的-实际上。
所以,记住指针和数组是不一样的,你应该了解它们的区别,但现在还不用担心。

olqngx59

olqngx593#

你要读一行写好的字符串并数字数,是这样吗?
首先,读取字符串:

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

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

相关问题