私はCSクラスの課題を次のように記述していますが、動的にメモリを割り当てることができません。私のコードを今日提出する必要があります。ファイルストリームに動的にメモリを割り当てる方法は?
次のように私は、構造:
typedef struct sample{
char* name;
int list_len;
float* value_list;
}sample;
私はファイルの読み取り中にメモリを動的に割り当てる必要があります。
区切られたサンプルデータレコードのファイル(テキストエディタ-picoで作成)を、サンプル構造体へのポインタの配列に読み込みます。注:1024の静的サイズの配列を使用できますが、配列の各要素は(上記で定義した)サンプル構造体へのポインタでなければなりません。最初は、配列の各要素をNULL(使用されていないことを示す)に設定し、後で使用する場合は動的に割り当てられたサンプル構造体に設定する必要があります。
注:サンプル構造体に動的にメモリを割り当てた後、構造体の各コンポーネントごとに十分なメモリがあります。しかし、ポインタであるその構造体の各コンポーネントについては、最終的にそれが指し示す「物」のためにメモリを割り当てる必要があります(char *、float *経由の配列)。また、サンプル構造体へのポインタを介してメモリを解放するときに、これを覚えておく必要があります。
私はこれまでこれを持っており、strtokを使用してリストを解析しようとしています。
void readfile(){
int SIZE = 1024;
sample* arr[SIZE] = {NULL};
FILE* fin;
sample* sample;
fin = fopen("sample.txt", "r");
if (fin == NULL) {
printf("sample.txt could not be opened"\n");
exit(1);
}
else
fgets(arr, SIZE, fin);
while(fin != EOF){
sample = (sample*)malloc(sizeof(sample);
}
}
'(= EOFフィン!)' "私はstrtokはを使用しようとしています" –
完全に間違っている間に - >これは不明です。コードには 'strtok()'はありません。 'strtok()'コードを投稿してください。 – chux
'else fgets(arr、SIZE、fin); while(fin!= EOF){... ' - >' else {while(fgets(arr、SIZE、fin)){... ' – chux