如何使用 strtok 将由白色 space 分隔的单词放入 C 中的 char 数组中?

How do I use strtok to take in words separated by white space into a char array in C?

我打开了一个文件:

#define MAX 1000000000
char buffer[MAX];

FILE *file = fopen("sample1.txt", "r");
char c;


if(file == NULL) {
    perror("File open error");
    return -1;
}

现在我想做的是使用 'strtok' 并将文件中的单独单词放入字符数组缓冲区。

因为你在这里看起来很新,我会回答,但一定要在 SO 中的下一个问题上付出更多努力。

您搜索过 strtok() 吗?在ref中有一个很好的例子。我只是稍微修改了一下,只使用空格作为标记。

我会把这段代码集成到你的代码中给你。

/* strtok example with whitespaces*/
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into token:\n",str);
  pch = strtok (str," ");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ");
  }
  return 0;
}

另请注意,您可以搜索 google 以查找与您的问题相关的问题。这是一个相关的 question!


正如 Alter Mann 指出的那样:

#include <stdio.h>
#include <string.h>

char *strsep(char **, const char *);

int main(void)
{
    char str[] = "- This, a sample string.";
    char *pch = str;
    char *tok;

    printf("Splitting string \"%s\" into token:\n", str);
    while (tok = strsep(&pch, " \t\n")) {
        printf("%s\n", tok);
    }
    return 0;
}

是您正在寻找的,不是标准的,但在许多实现中都可用。检查其引用 here.

此外,请注意这是如何改进我上面提供的 strtok() 代码的提示。