如何从文本文件中读取多行(约5000行)并将所有行存储在单个字符串数组中? 我已经有一些代码运行顺利,但它没有按照预期的方式工作。我只得到存储在数组中的文件的最后一行。
int main(){
int n;
char line[401];
char string[10000];
fr = fopen ("fila1b.txt", "rt");
while(fgets(line, 400, fr) != NULL){
strcat(string, line);
}
fclose(fr);
printf("%s\n", string );
}
编辑:我更新了代码并进行了一些更改。现在我使用strcat函数将fgets获取的行的内容插入到原始字符串数组中。显然它正在发挥作用。但是当我打印'字符串'时,它只打印前300行,然后它给我分段错误。
答案 0 :(得分:0)
通常的方法是使用read
或fread
来填充所有字符:
#define MIN_CHUNK_SIZE (1024)
char *read_file(FILE *f) {
size_t n_read_total = 0;
size_t buf_size = MIN_CHUNK_SIZE + 1; // Allow space for nul terminator.
char *buf = safe_malloc(buf_size);
size_t n_avail;
do {
n_avail = buf_size - n_read_total - 1;
if (n_avail < MIN_CHUNK_SIZE) {
// Double the buffer size.
n_avail += buf_size;
buf_size += buf_size;
buf = safe_realloc(buf, buf_size);
}
size_t n_read = fread(buf + n_read_total, 1, n_avail, f);
n_read_total += n_read;
} while (n_read == n_avail);
buf[n_read_total] = '\0';
return safe_realloc(buf, n_read_total + 1);
}