Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 12:59   #1
Meri12
 
Регистрация: 21.09.2011
Сообщений: 6
По умолчанию Не читаются строки из файла

Добрый день!
Третий день сижу с программой. Не получается чтение из файла.
Написала пробную мини программу, выдается таже ошибка:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FILE *f;
AnsiString s;
f=fopen("t.txt","w");

s="54";
fprintf(f,"%s\n",s);

s="25";
fprintf(f,"%s\n",s);

fclose(f) ;

f=fopen("t.txt","r");
fscanf(f,"%s",s,"\n");

Edit1->Text=s;

fscanf(f,"%s",s,"\n");
Edit2->Text=s;



Если запусать сразу весь кусок программы, то все работает, а если закрыть, открыть снова программу и пользоваться только этим куском программы:

f=fopen("t.txt","r");
fscanf(f,"%s",s,"\n");

Edit1->Text=s;

fscanf(f,"%s",s,"\n");
Edit2->Text=s;
, то прога выдается ошибку, что идет обращение к нулевому адрессу. Ей не нравится строка fscanf(f,"%s",s,"\n").
Помогите, Плиз!!!
Meri12 вне форума Ответить с цитированием
Старый 21.09.2011, 13:44   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А так пойдёт?
Код:
FILE *f;
//AnsiString s;
char s[80];
if((f=fopen("t.txt","rt"))==NULL)
  {
   ShowMessage("Файл не открыть");
   return;
  }
fscanf(f,"%s",s);

Edit1->Text=s;

fscanf(f,"%s",s);
Edit2->Text=s;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.09.2011, 16:17   #3
Meri12
 
Регистрация: 21.09.2011
Сообщений: 6
По умолчанию

Спасибо большое, а почему не идет с AnsiString?
Meri12 вне форума Ответить с цитированием
Старый 21.09.2011, 16:35   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Meri12 Посмотреть сообщение
Спасибо большое, а почему не идет с AnsiString?
Потому, что тип AnsiString выделяет память динамически, и программа не знает, куда ссылаться переменной s. Вообще-то правильно писать &s, но Борланд сам делает приведение к типу "указатель". С "чистым" С, к сожелению, такой фокус не пройдёт.
А вообще, просто интересно стало, почему вы не используете класс TStringList? Там есть все необходимые Вам функции. А операторы fopen и fscanf для Борланда считаются устаревшими.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 21.09.2011 в 16:43.
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.09.2011, 17:17   #5
Meri12
 
Регистрация: 21.09.2011
Сообщений: 6
По умолчанию

Я учусь только на третьем курсе, а преподавателя нормального по С не было. Приходилось самостоятельно. Что понимаю, то и пишу)))
Meri12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
УДаление строки из файла методом создания временного файла. dykatob Общие вопросы C/C++ 3 28.05.2011 01:46
Строки из файла! P-VS-S Общие вопросы C/C++ 1 09.12.2009 03:50
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Из файла не читаются русские буквы. snaem Общие вопросы .NET 3 31.03.2008 23:05
Найти числа,которые читаются слева-направо и справа-налево одинаково(например, 1001). Паскаль NikLik Помощь студентам 8 22.11.2007 23:00