質問: 標準入力からファイル名を入力して、そのファイルのデータを読み込み、ポインタ配列にデータを格納します。その後、別のファイルに先ほど格納したデータを書き込み、出力できれば成功です。 次の4行が読み込むデータです。 JZK-30 Jizake_tsumeawase 4500 BSP-15 Body_soap_set 3000 BT-200 Bath_towel_set 2500 TEA-20 Koutya_tsumeawase 5000 そして以下のコードを作成したのですが、42行目以降のアロー演算子を使用した行に "expected identifier before '(' token"のエラーが表示されます。しかし、何が足りないのかわかりません。。。ご教授頂けると助かります! ``` #include #include #include #define MAX 4 typedef struct{ char *code[MAX]; char *name[MAX]; int *price[MAX]; }gift; int main(void) { int num,i,len; char ref[256]; //標準入力で入れるファイル名 int fprice[MAX][256]; //ファイルから読み込むときの一時保管場所 char fname[MAX][256], fcode[MAX][256]; //ファイルから読み込むときの一時保管場所 FILE *fp; //読み込み先のファイル FILE *file; //書き込み先のファイル gift gifts; printf("ファイル名を指定して下さい:"); scanf("%s",ref); for(i=0;i(code+i)=(*char)malloc(sizeof(char)*strlen(fcode[i]));//(ココから42行目です)error発生 //以降のアロー演算子を使用した所でエラーが起こっています gifts->(name+i)=(*char)malloc(sizeof(char)*strlen(fname[i]));//error発生 gifts->(price+i)=(*int)malloc(sizeof(int)*strlen(fprice[i]));//error発生 //コピーします srcpy(gifts->(code+i),fcode[i]); //error発生 srcpy(gifts->(name+i),fname[i]); //error発生 srcpy(gifts->(price+i),fprice[i]); //error発生 //書き込みます file=fopen("present.txt","w"); fprintf(file,"%s\n%s\n%d\n",gifts->(code+i),gifts->(name+i),gifts->(price+i)); //error発生 free(gifts->(code+i)); //error発生 free(gifts->(name+i)); //error発生 free(gifts->(price+i)); //error発生 } puts("表示形式変換後ファイルに出力しました。"); fclose(file); fclose(fp); return 0; } ```
回答: まず、目についたところで、 > > gifts->(code+i)=(*char)malloc(sizeof(char)*strlen(fcode[i])); > > > `gifts` は、構造体(struct)なんで、`->` は無しですね。 単なる (.) かと。 とすると、`code+i` --> `code[i]` 辺りでしょうか。 `(*char)` も初めて見る? `(char *)` でしょうか。