char *
の配列を初期化する方法を理解しようとしています。私はchar *[100]
属性を持つ構造体を定義しました。私はその属性に文字列配列を割り当てた場合、私は以下に示されるエラー得た:Cで文字ポインタの配列を初期化
#include <stdio.h>
#include <stdlib.h>
#define MAXHIST 100
struct rec
{
int i;
float PI;
char A;
char *arguments[MAXHIST];
};
int main()
{
const char name[5] = "-aefa";
struct rec ptr_one;
// struct rec ptr_one;
(ptr_one).i = 10;
(ptr_one).PI = 3.14;
(ptr_one).A = 'a';
(ptr_one).arguments = { "/bin/pwd", 0};
printf("First value: %d\n",(ptr_one).i);
printf("Second value: %f\n", (ptr_one).PI);
printf("Third value: %c\n", (ptr_one).A);
// free(ptr_one);
return 0;
}
をコンパイル時に生成されたエラーがある:Cで
hmwk1-skk2142(test) > cc test.c
test.c: In function ‘main’:
test.c:23:27: error: expected expression before ‘{’ token
(ptr_one).arguments = { "/bin/pwd", 0};
配列を割り当てることはできませんが。その要素に1を割り当てる。割り当てと初期化を混同しないでください。 – alk
左辺値として配列を使用しています。 – ameyCU
'ptr_one'はポインタではありません。ミスリーディングの名前は使用しないでください。 – Olaf