Я пытаюсь извлечь содержимое файла в матрицу, но файл может выглядеть совершенно иначе.
Например, все эти файлы должны давать одинаковый результат: матрица 3x3, содержащая 1,2,3,4,5,6,7,8,9.
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3 4
5
6
7 8
9
1 2 3
$something
$something else
4 5 6
$something else else
7 8 9
Надеюсь, я заранее знаю размеры матрицы, а также символ "$", который указывает, что эти строки должны игнорироваться в текущем процессе.
Мой текущий алгоритм с использованием fscanf прекрасно работает, но он не может работать со строками "$ что-то".
Я подумал, что мне следует использовать метод fgets / strtok / sscanf, но есть некоторые проблемы.
// File* file (already assigned)
char line[32]; //assuming 32 is enough
char* token;
fgets(line,32,file);
token = strtok(line," \t");
for (y=0; y<ySize; y++)
{
for (x=0; x<xSize, x++)
{
if (token[0] == '$') //should use a str function
{
fgets(line,32,file);
token = strtok(line," \t")
x--;
}
else
{
if (we are at the end of the line)
{
fgets(line,32,file);
token = strtok(line," \t")
}
sscanf(token,"%d",&matrix[x][y];
token = strtok(NULL," \t");
}
}
}
По сути, я хотел бы получить некоторую помощь для написания условия "если (мы находимся в конце строки)" и некоторый ввод для моего метода, это безупречно? Я правильно подумал о процессе?
Спасибо.