将输入拆分为 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
并替换第一个数组元素。
我正在学习 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
并替换第一个数组元素。