Чтение из txt в массив float
FILE * pFile;
char mystring [100];
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
while( fgets (mystring , 100 , pFile) != NULL )
{
for(int i=0;i<strlen(mystring);i++)
if(mystring=='\n') mystring='\0';
Memo1->Lines->Add(FloatToStr(StrToFloat(mystring) * 200));
}
fclose (pFile);
она должна считывать значения с текстового файла, и просто выводить их в мэмо, на BCB ранней версии сделано, всё работает - повторяю на своём компе - access violatiоn -типа ошибки
Это как-то связано с тем, что BCB другой версии (2010) Embarcadero® C++Builder® XE
Не могу сказать что я программист со стажем, иначе бы не обратился сюда, помогите)
В файле значения выглядят так:
1.1
2.3
3.3
Код:
Memo1->Lines->Add(FloatToStr(StrToFloat(mystring) * 200));
Код:
if(mystring=='\n') mystring='\0';
Код:
if(mystring[i]=='\n') mystring[i]='\0';
Код:
//это пример как можно работать с символами С-строк
while(ch = *mystring++)
{
if(ch == '\n')ch = '\0'
//что то делаем потом с ch - например формируем новую строку
//в принципе для строк полученных из файла так и необходимо делать
}
while(ch = *mystring++)
{
if(ch == '\n')ch = '\0'
//что то делаем потом с ch - например формируем новую строку
//в принципе для строк полученных из файла так и необходимо делать
}
это так на вскидку. может еще какие бока. может и билдер свою роль играет.
Кстати. Используйте пожалуйста форматирование кода.
Цитата: kot_
Код:
Memo1->Lines->Add(FloatToStr(StrToFloat(mystring) * 200));
и так делать не стоит. Лучше так:
Код:
float sch = 0.0;
try{
sch = StrToFloat(mystring);
}
catch(...){
//обрабатываем если не флоат
continue;
}
sch *= 200;
Memo1->Lines->Add(FloatToStr(sch));
try{
sch = StrToFloat(mystring);
}
catch(...){
//обрабатываем если не флоат
continue;
}
sch *= 200;
Memo1->Lines->Add(FloatToStr(sch));
Уважаемый, проблема не решилась, может есть ещё что-то? Или другой способ? Кто-то пользует такую же прогу?
В отладчике надо смотреть, на какой строке вылетает.
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FILE * pFile;
char mystring [100];
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
while( fgets (mystring , 100 , pFile) != NULL )
{
for(int i=0;i<strlen(mystring);i++)
if(mystring[i] == '\n') mystring[i] = '\0';
Memo1->Lines->Add(FloatToStr(StrToFloat(mystring) * 200));
}
fclose (pFile);
}
{
FILE * pFile;
char mystring [100];
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
while( fgets (mystring , 100 , pFile) != NULL )
{
for(int i=0;i<strlen(mystring);i++)
if(mystring[i] == '\n') mystring[i] = '\0';
Memo1->Lines->Add(FloatToStr(StrToFloat(mystring) * 200));
}
fclose (pFile);
}