问题描述
我正在学习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
并每次都替换第一个数组元素。