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

问题描述

我正在学习C,但是在拆分文本字符串时遇到问题。 我希望用户在一行中键入许多由空格分隔的单词,然后程序将拆分这些单词,并将每个单词保存在名为 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并每次都替换第一个数组元素。