Я ищу свою проблему, но не нашел ответа. Я пытаюсь прочитать таблицу двойных значений из файла в 2d-массив двойников в C++, но я не могу заставить его работать.Не удается заполнить 2d-массив с помощью sscanf_s из файла
Файл полон другого мусора, который мне не нужен, и таблица заключена в скобки «НАЧАЛО ТАБЛИЦЫ» и «КОНЕЦ ТАБЛИЦА». Таблица имеет 5 удвоений в строке с разделителем пространства и неизвестным количеством строк. Таким образом, файл выглядит следующим образом
junk
.
.
.
BEGIN TABLE
0.12145 0.23234 2.32423 1.32422 0.12345
1.34534 1.23423 5.21323 3.12313 1.22231
.
.
.
2.32422 3.23423 1.12345 4.34532 2.23423
END TABLE
Так первый я иду через файл, поиск начала и конца таблицы и выделить память для моего массива:
char sBuffer[100];
double** darrTable;
int iRes = -1;
iRes = fopen_s(&pFile, strFile, "rb");
if (iRes==0)
{
int ilines = 0;
bool beof = false;
bool bfound = false;
//get number of lines for array allocation
while(!beof)
{
fgets(sBuffer,100,pFile);
if(strstr(sBuffer,"END TABLE"))
{
bfound = false;
beof = true;
}
if(bfound) ilines++;
if(strstr(sBuffer,"BEGIN TABLE"))bfound = true;
}
darrTable = new double*[ilines+1];
for(int i = 0; i < (ilines+1); ++i) darrTable [i] = new double[5];
}
в другом блоке кода Поеду через снова линии и хочет считывание строки, но он не будет работать
int ilines = 0;
bool beof = false;
bool bfound = false;
while(!beof)
{
fgets(sBuffer,100,pFile);
if(strstr(sBuffer,"END TABLE"))
{
bfound = false;
beof = true;
}
if(bfound)
{
sscanf_s(sBuffer,"%d %d %d %d %d",&darrTable [ilines][0],&darrTable [ilines][1],&darrTable [ilines][2],&darrTable [ilines][3],&darrTable [ilines][4]);
ilines++;
}
if(strstr(sBuffer,"BEGIN TABLE"))bfound = true;
}
компилируется и выполняется без ошибок, но все, что я получаю массив полного 0.000000000 для darrTable. sscanf_s returs 1 witch предлагает, чтобы было найдено 1 значение, но все значения равны 0.
Я использую VisualStudio 2005 SP0.
Извините за мой английский и спасибо за вашу помощь заранее.
Используйте '% f' или'% lf' вместо '% d'. Вы пытаетесь рассматривать значения 'float' как' int'. –