Читать файл в строку

Я хотел бы прочитать файл в строку.

У меня есть следующий код, который можно скомпилировать, но нельзя запустить.

Моя идея состоит в том, чтобы использовать цикл while для добавления каждого символа в файле в конец строки до EOF.

char string[50000];    

FILE *file;
file = fopen("filename.txt", "r");

char buffer;


while((buffer=fgetc(file)) != EOF)
{
    strcat(string, buffer);
}

person Johnson    schedule 01.12.2013    source источник
comment
@SharonJDDorot Я хотел бы изменить первую строку и переписать ее в файл.   -  person Johnson    schedule 01.12.2013
comment
Поэтому вместо этого откройте файл как a+ или r+ (один из них возвращает указатель на начало файла и позволяет перезаписать текст, не знаю какой), прочитайте первую строку в массив символов, верните указатель на начало файла файл и просто перезапишите существующий текст. Гораздо проще и эффективнее.   -  person Sharon Dorot    schedule 03.12.2013


Ответы (3)


Попробуйте сначала установить string[0] на \0. Также buffer должен быть char * и также заканчиваться нулем.

Со страницы man:

 NAME
 strcat, strncat -- concatenate strings

 LIBRARY
 Standard C Library (libc, -lc)

 SYNOPSIS
 #include <string.h>

 char *
 strcat(char *restrict s1, const char *restrict s2);

 char *
 strncat(char *restrict s1, const char *restrict s2, size_t n);

 DESCRIPTION
 The strcat() and strncat() functions append a copy of the null-terminated
 string s2 to the end of the null-terminated string s1, then add a termi-
 nating `\0'.  The string s1 must have sufficient space to hold the
 result.
person ask    schedule 01.12.2013

Буфер, в который вы читаете, должен быть массивом.

char buffer[50000];
person Zero Fiber    schedule 01.12.2013

person    schedule
comment
@Johnson: В C строка представляет собой массив значений char, заканчивающийся специальным значением нулевого символа '\ 0'. Итак, если вы имеете в виду строку, она никогда не должна быть длиной 1 символ, а минимум 2 или более. - person dbndhjefj; 02.12.2013