将输入拆分为 C 中数组位置的问题

Problem in splitting an input into positions of an array in C

我正在学习 C,但在拆分文本字符串时遇到了问题。 我希望用户在一行中键入许多由 space 分隔的单词,然后程序将拆分这些单词并将它们中的每一个保存在名为 list 的数组的一个位置,为了做到这一点,我正在尝试使用 strtok() 函数,但我 运行 出现了一些警告和错误,但我看不出我做错了什么。

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

int main(int argc, char *argv[])
{
    char list[1000];
    char input[1000];


    printf("Type:\n"); //test

    scanf("%1000[^\n]", &input);

    char* split = strtok(input, " ");
    while(split != NULL) 
    {
        int count = 0;
        list[count] = split;
        count++;
        split = strtok(NULL, " ");
    }

    printf("%s %s\n", list[0], list[1]); //test




    return 0;
} 

list 需要是 char * 的数组,而不是 char.

的数组

将声明更改为:

char *list[1000];

此外,初始化 int count = 0; 需要在 之前 while 循环。否则你每次都将它设置回 0 并替换第一个数组元素。