達成したいこと:入力を分割して別の配列に入れたいとします。
例:エラー:配列型の式への代入
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;
}
私は、このエラーに関する私の研究を行っている
The user enters: 1337 Hello World
//Programs split input and store 1337 in str1 and Hello World in str2
私はこのエラーを作成するコードを持っています。私が学んだことから、varに配列を代入することはできませんが、それは私がやろうとしていることではありません。配列に配列値を代入しています。
私が信じている問題は、strtok
機能で、それはchar値として機能すると信じているからです。私がやっていることは、入力を分割して別のvarに入れて配列に入れることですが、それは効率的ではありません。
P.S:私はオーバーフローを防ぐためにfgets()
を使用し、gets()
を使用していないと言ったコメントを取得します知っています。私はあなたがそのコメントを入れないことをお勧めします。私は先生のために使用する必要がありますが、後で私の使用のために変更されます。
'='の代わりに 'strcpy'(またはなど)を使用します。 – BLUEPIXY
しかし、私は入力を分割し、別の配列に配置したいと思います。 @BLUEPIXY –
そこには変数があります。おそらく、 'strtok'に関するマニュアルページを読んで、それが何を返すのか見てみてください。 'fgets'と' gets'に関しては、そこにそのコメントを使用して、矛盾していますが、あなたはコードにバグがあると考えていません。 – t0mm13b