错误:使用数组类型

时间:2017-05-25 23:23:09

标签: c arrays strtok

我想要实现的目标:我希望将输入拆分并将其放入不同的数组中。
示例:

The user enters: 1337 Hello World
//Programs split input and store 1337 in str1 and Hello World in str2

我有一个代码可以创建此错误:

  

main.c:19:12: error: assignment to expression with array type

str2[i] = strtok(NULL, "\n");
        ^

代码:

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

int main(){
    char input[1000], str1[100][1000], str2[100][1000];
    int i;

    for(;; i++){
        printf("Enter a day and remainder: ");
        gets(input);

        if(strcmp(input, "0") == 0)
            break;
        else{
            str1[i] = strtok(input," ");//The cause of the error
            str2[i] = strtok(NULL, "\n");
        }
    }
   return 0;
}

我已就此错误进行了研究。根据我的学习,你不能为var分配一个数组,但这不是我想要做的。我正在为数组分配一个数组值。
我认为问题出在strtok函数中,因为我认为它可以作为char值。我想要做的是分割输入并将其放入不同的var然后将其放入数组中,但这并不高效。

P.S:我知道我会收到评论说不要使用gets(),请使用fgets()来防止溢出。我建议你不要发表评论。由于我的老师,我必须使用,但稍后会更改以供我使用。

1 个答案:

答案 0 :(得分:0)

我的代码中的问题并未初始化istrtok。我假设在声明一个var时,它的值为0.这是一个错误,使用strtok就是这样,因为你不能将一个数组分配给一个数组。您应该使用strcpy代替,您将获得相同的结果。