c - 获取字符串 token 的长度

标签 c token strtok strlen

C 编程:

我试图获取字符串中每个单词的长度,但遇到了很多麻烦,无论我使用什么方法都会出现段错误。

我最初尝试只使用“strlen(pstr)”,但这导致了段错误。

这是我最近的尝试,但仍然会导致段错误:

void format_text(char* text)
{
    char* pstr;
    char  copied[1000];
    int   loop;
    int   strCnt = 0;
    int   temp;
    int   strSize[100];
    int   strNo[100];

    pstr = strtok(text, " ");
    while (pstr != NULL)
    {
        pstr = strtok(NULL, " ");
        strcpy(copied, pstr);
        strSize[strCnt] = strlen(copied);
        strCnt++;
    }

    printf("the number of strings is: %d\n", strCnt);
    for (loop = 0; loop < strCnt; loop++)
    {
        printf("The length of string %d is %d\n", loop + 1, strSize[loop]);
    }
}

如何获取并打印每个单词(token)的长度?

最佳答案

您不需要copied 字符串来获得长度,您可以简单地使用pstr。并且,您需要将 strtok() 放在 strlen() 之后,否则您将错过第一个单词的长度。

这是应该起作用的:

    pstr = strtok(text, " ");
    while (pstr != NULL)
    {
        strSize[strCnt++] = strlen(pstr);

        pstr = strtok(NULL, " ");
    }

关于c - 获取字符串 token 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428524/

相关文章:

c - 我对 fgets() 和 strtok() 的使用对于解析多行输入是否不正确?

c - 从C语言的文本文件中读取字符串

c - 在 C 中将 char 指针分配给 char 数组

c++ - 如果使用调试信息编译,则通过名称获取全局变量地址

Html 文件未插入 Mysql 表中

Javascript:我应该如何处理页面刷新时的 token 验证?

java - 在 JAVA 中使用 JWT 创建 token

c - int * ( * ) ( int * ) 这个类型在c语言中代表什么?

c - 段错误 - sprintf

ruby-on-rails - Rails 设计/ token 身份验证 : redirect if token wrong or missing