Я пытаюсь извлечь содержимое файла в матрицу, но файл может выглядеть совершенно иначе.
Например, все эти файлы должны давать один и тот же результат: матрица 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 отлично работает, но он не может работать со строками «$something».
Я решил, что мне следует использовать метод 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");
}
}
}
По сути, я хотел бы получить некоторую помощь, чтобы написать условие «если (мы находимся в конце строки)» и некоторые данные о моем методе, он безупречен? Я правильно подумал о процессе?
Спасибо.
strtol()
. Вы можете использовать второй аргумент для настройки цепочки вызовов, которая проходит через всю строку. - person pmg   schedule 17.03.20121 2 $ignore
? - person Jerry Coffin   schedule 17.03.2012