У меня небольшая проблема с файловым вводом-выводом и поиском правильного алгоритма для правильного чтения данных.Проблема в том, что заголовок может немного отличаться от каждого файла.
Например:
File 1.
500 500
100
Binary
File 2.
500
d500
100
Binary
File 3.
500
500
100
Binary
File 4.
500
500 100
Binary
...
Мне интересно получить 3 числовых значения.Я попробовал это с fgets
и scanf
, а также с fscanf
... и так одним.Но я нахожу при каждой попытке способ, где я не могу получить значения.
Есть ли у кого-нибудь идеи, кому я могу получить значения в каждом случае?
Редактировать
/* Jump over the identification and comment strings. */
fseek(in, 3, SEEK_SET);
do
{
fgets(line, PREAMBLE, in);
} while(strncmp(line, "#", 1) == 0);
/* Save the information in the structer. */
sscanf(line, "%u %u", &imginf.width, &imginf.height);
fgets(line, PREAMBLE, in);
sscanf(line, "%u", &imginf.depth);
return imginf;
Это работает, например:
File
500 500
100
Binary
Решение
Ее интересная часть кода.Теперь я думаю, что я получаю все значения.Может быть, код выглядит немного вонючим, я не уверен, что код чистый.
while (a[2] == 0 ){
fgets(line, 255, in);
i = 0;
while (line[i] != '\0') {
if ((line[i] < '0') || (line[i] > '9')) {
i++;
}
else {
while ((line[i] >= '0') && (line[i] <= '9')) {
buffer[j] = line[i];
j++;
i++;
}
j = 0;
a[k] = atoi(buffer);
printf("%d\n", a[k]);
strcpy(buffer, "");
k++;
}
}
}
Greetz