Error: assignment to expression with array type
Error: assignment to expression with array type
我想实现的目标:我希望将输入拆分并放入不同的数组中。
示例:
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()
以防止溢出。我建议你不要发表评论。由于我的老师,我必须使用,但稍后会更改以供我使用。
我的代码中的问题是没有初始化 i
和 strtok
。我假设在声明一个 var 时,它的值为 0。那是一个错误,像这样使用 strtok
是不正确的,因为您不能将数组分配给数组。您应该改用 strcpy
,您将获得相同的结果。
我想实现的目标:我希望将输入拆分并放入不同的数组中。
示例:
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()
以防止溢出。我建议你不要发表评论。由于我的老师,我必须使用,但稍后会更改以供我使用。
我的代码中的问题是没有初始化 i
和 strtok
。我假设在声明一个 var 时,它的值为 0。那是一个错误,像这样使用 strtok
是不正确的,因为您不能将数组分配给数组。您应该改用 strcpy
,您将获得相同的结果。