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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2009, 13:55   #1
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию Прочитать файл и записать данные в массив

Хочу из файла *.txt прочитать записанные в него числа и заполнить их в двух мерный массив но не получается.
Одно число - 1 строчка, но в конце строки стоит символ новой строчки '\n';
Как от него избавиться?
Ето код из кнопки в С++ Builder 6
Код:
{
FILE *f1;
int i,j, mas[2][2];

char s[256]; 

f1 = fopen("asd.txt","r");

for(i=0; i<=2; i++){
 for(j=0; j<=2; j++){
   fgets(s, 256, f1);
   IntToStr(mas[i][j]) = s;
   }
  }
 fclose(f1);
}

Последний раз редактировалось ChukCha; 21.02.2009 в 14:31.
ChukCha вне форума Ответить с цитированием
Старый 21.02.2009, 14:42   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
int i,j, mas[2][2];
У вас в массив 2x2, а в циклах его используете как массив 3x3
Код:
for(i=0; i<=2; i++){
 for(j=0; j<=2; j++){
А вот эта запись:
Код:
IntToStr(mas[i][j]) = s;
вообще какая-то странная..
Тогда уж
Код:
mas[i][j] = StrToInt(s);
================

Используйте atoi():
Добавьте на форму Memo, а для кнопки напишите обработчик:
Код:
FILE *f1;
int i,j, mas[3][3];

char s[256];

f1 = fopen("asd.txt","r");
if (f1 == NULL) {ShowMessage("File not open");}
for(i=0; i<3; i++){
 for(j=0; j<3; j++){
   fgets(s, 256, f1);
   mas[i][j] = atoi(s);
   Memo1->Lines->Text = Memo1->Lines->Text + IntToStr(mas[i][j])+" ";
   }
 Memo1->Lines->Add("");
  }
 fclose(f1);
Содержимое файла "asd.txt":
Код:
1
3
4
5
6
2
4
5
3
=============
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.02.2009, 14:49   #3
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию

"mas[i][j] = atoi(s);" это для того что бы убрать последний символ?
ChukCha вне форума Ответить с цитированием
Старый 21.02.2009, 14:56   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

atoi - стандартная функция преобразования строки (char*) в число.
А StrToInt, насколько я знаю, работает только с ansistring-строками.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.02.2009, 15:01   #5
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию

спс тебе) теперь ясно.
ChukCha вне форума Ответить с цитированием
Старый 22.02.2009, 19:48   #6
ChukCha
Пользователь
 
Регистрация: 18.04.2007
Сообщений: 80
По умолчанию

а можна замисть
Код:
f1 = fopen("asd.txt","r");
зделать переменную переменную или Edit1->Text; ?
Код:
f1 = fopen(s,"r");
а то у меня не получалося
ChukCha вне форума Ответить с цитированием
Старый 22.02.2009, 19:56   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Как-то так:
Код:
s = Edit->Text;
f1 = fopen(s.c_str(),"r");
upd
Достаточно написать так:
Код:
f1 = fopen(Edit1->Text.c_str(),"r");
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 22.02.2009 в 20:05.
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40
Из Access записать данные в файл Ecxel roland_12 Microsoft Office Access 1 09.09.2008 05:51
Заполнить массив и записать в файл Amery Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 27.05.2008 20:02
Как прочитать данные из Repeater? posdnyaa БД в Delphi 0 07.04.2008 09:50
Как записать и прочитать переменную моего типа из реестра? Никки Общие вопросы Delphi 2 09.12.2007 13:56