read_line.cというファイルをコンパイルすると実行結果のようなエラーが出ます。
意味と直し方がわかりません。教えて頂けませんか。
コード read_line.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #define ALLOC_SIZE static char *st_line_buffer=NULL; static int st_current_buffer_size=0; static int st_current_used_size=0; static void add_character(int ch) { assert(st_current_buffer_size >= st_current_used_size); // if文の中がエラーが出ている箇所です。 if(st_current_buffer_size == st_current_used_size){ st_line_buffer=realloc(st_line_buffer, (st_current_buffer_size+ALLOC_SIZE)*sizeof(char)); st_current_buffer_size += ALLOC_SIZE; } // バッファの末尾に1文字追加。 st_line_buffer[st_current_used_size]=ch; st_current_used_size++; } //fpから1行読み込む。ファイルの末尾に来たら,NULLを返す。 char *read_line(FILE *fp) { int ch; char *ret; st_current_used_size=0; while((ch=getc(fp)) != EOF){ if(ch=='\n'){ add_character('\0'); break; } add_character(ch); } if(ch==EOF){ if(st_current_used_size>0){ add_character('\0'); // 最後の行の後に改行がなかった場合 }else{ return NULL; // ファイルが終わったら、NULLを返す。 } } ret=malloc(sizeof(char)*st_current_used_size); strcpy(ret,st_line_buffer); return ret; } void free_buffer(void) { free(st_line_buffer); st_line_buffer=NULL; st_current_buffer_size=0; st_current_used_size=0; } 実行結果 naka@naka ~/src_dos $ gcc -c read_line.c read_line.c: In function 'add_character': read_line.c:33:39: error: expected expression before ')' token (st_current_buffer_size+ALLOC_SIZE)*sizeof(char)); ^ read_line.c:34:39: error: expected expression before ';' token st_current_buffer_size += ALLOC_SIZE; ^
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/11 09:46