プログラムのこの部分を C++ から C に変換する必要があります。
float ** OpenRotGrid_H(float **grid, unsigned int &nl, unsigned int & nc, bool &ok){
ifstream fs;
string line, num;
unsigned int l(0),c(0),i(0),ncmax(0);
fs.open("CarmY.txt");
if (!fs) {
//std::cout<<"Error: the Error file 'CarmY.txt' cannot be open\n\n";
ok=false;
}
else{
//size of the file
getline(fs,line);
ncmax= line.size()/MAXFLOAT;
nl++;
while(getline(fs,line)){
nl++;
}
fs.clear();
//Read CarmY values ( = grid)
grid = initialize(nl,ncmax);
fs.seekg(0,ios::beg); //initial position in the file
while(getline(fs,line)){
i=0;
c=0;
while(i<line.length()){
while(i<line.length() && line[i]!='\t'){
num.push_back(line[i]);
i++;
}
grid[l][c]=(float) atof(num.c_str());
c++;
num.clear();
if(i<line.length() && line[i]!='\n') i++;
}
l++;
}
nc=c;
fs.close();
}
return grid;
}
int main(){
unsigned int nl=0 , nc=0 , nangle=0, nrot=0;
float **grid;
bool ok;
grid=initialize(nangle, nrot);
OpenRotGrid_H(grid, nl, nc, ok);
return 0;
}
ファイル「C-arm」には長さの異なる数字の行がいくつかあります。このプログラムはこのファイルを開き、各数字を取得してグリッドに書き込みます。
getline(fs,line)
たとえば、の代わりに何を使用できるかわかりませんfs.seekg
...?