ここに質問を投稿するのはこれが初めてです。似ているものを検索しましたが、見つかったものはありませんでした。
これが私のヘッダーのスニペットです:
#define LINE_LEN_MAX 256
typedef struct line_description {
char buffer[LINE_LEN_MAX + 1];
[...]
} line;
そして、これが私のメイン関数からのスニペットです:
int main(int argc, char *argv[]) {
line *lineRead;
//input: valid FILE *, read from cmdline
//char buffer[LINE_LEN_MAX + 1];
while(fgets(lineRead->buffer, LINE_LEN_MAX + 1, input) != NULL) {
[...]
memset(lineRead->buffer, 0, LINE_LEN_MAX + 1);
}
}
セグメンテーション違反が発生し続けます。'memset()'行をコメントアウトすると、セグメンテーション違反が発生する前に、入力ファイルから正確に3行を読み取ることができます。
ただし、「lineRead->buffer」をローカルのchar[]に置き換えると、入力ファイルを完全に読み取ることができます。
ここで構造体について理解していないことは何ですか?私が欲しいと思うのは、構造体内のchar []の先頭へのポインターですが、明らかにこれは起こっていることではありません。
編集:申し訳ありませんが、指定するのを忘れました:ここでは動的メモリを使用していません。