2017-02-04 17 views
0

次のコードをコンパイルしようとしましたが、このエラーが発生します。「エラー:配列タイプの式への代入」は何を意味しますか?

char command[100]; 
    FILE *fp; 
    command = sprintf(command, "sudo asterisk -rx \"pjsip show aor %s\"", row[i]); 
    fp = popen (command, "r"); 
    if (fp == NULL) { 
     printf("Failed to run command\n"); 
     exit(1); 

このエラーが表示されます。「エラー:配列型を持つ式に代入」

+0

つまり、配列に割り当てることはできません。これはできません。そして、['sprintf'(および関連する関数)](http://en.cppreference.com/w/c/io/fprintf)は、とにかく文字列を返しません。そしてあなたはそれを必要としません。そして、代わりに 'snprintf'を使ってください。 –

+0

LHSでは、配列型を使用しているため、割り当てできません。 –

答えて

2

あなたは配列型を持つ変数にsprintf()の値を代入しています。配列は変更可能な左辺値ではありません。彼らに割り当てることはできません。 sprintf()intを返します。その値をintに割り当てる必要があります。しかし、私はsprintf()を避け、代わりにsnprintf()を使用することをお勧めします。 sprintf()はバッファオーバーフローする傾向があります。

int rc = snprintf(command, sizeof command, "sudo asterisk -rx \"pjsip show aor %s\"", row[i]); 
関連する問題