Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2018, 18:39   #1
Fillimon
Пользователь
 
Регистрация: 16.04.2018
Сообщений: 13
По умолчанию Ошибка в чтении с файла (чистый СИ)

Здасте. Ребят, такая проблема, написал функцию, которая должна читать с файла некоторые данные в структуру, но где-то допустил ошибку, помогите плз.
Структура выглядит так:
Код:
struct AEROFLOT {
    char a[20];
    int b;
    char c[20];
    int d;
    int e;
} data[80];
Данные в файле представлены в виде:
"Слово 25 слово 45 1 слово 6 слово 8 19"
И собственно само считываение из файла, где n - переменная отвечающая за кол-во ненулевых элементов массива, и data[i]. - структура описанная выше. Поиск и чтение провожу по наличию пробела, в конце символьного массива ставлю символ конца строки, но это не помогает.

Код:
	fseek(f, 0, SEEK_SET);
	
	n = (n + 1) / 5;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			char s = fgetc(f);
			if (s != ' ') data[i].a[j] = s;
			else { data[i].a[j] = '\0'; break; }
		
		}
		fscanf(f, "%i", &data[i].b);
		fseek(f, 1, SEEK_CUR);
		for (int j = 0; j < n; j++) {
			char s = fgetc(f);
			if (s != ' ') data[i].c[j] = s;
			else { data[i].c[j] = '\0'; break; }
		}
		fscanf(f, "%i%i", &data[i].d, &data[i].e);
		fseek(f, 1, SEEK_CUR);
	}

Последний раз редактировалось Fillimon; 25.04.2018 в 18:42.
Fillimon вне форума Ответить с цитированием
Старый 26.04.2018, 08:24   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Тут надо руки отрубать только лишь за чтение файлов побайтно.
----
Вынеси парсинг (преобразование строки в данные структуры) в отдельную функцию.
А файл читай построчно.
Код:
char * fgets( char * string, int num, FILE * filestream );
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при чтении из файла Uefa Помощь студентам 7 09.01.2016 13:10
Ошибка при чтении файла Стремящийся Общие вопросы по Java, Java SE, Kotlin 4 03.07.2012 16:50
Ошибка при чтении из файла BEL9ILLI Общие вопросы C/C++ 3 13.01.2012 10:12
ошибка при чтении файла ongleb Общие вопросы C/C++ 17 30.07.2009 13:48
ошибка при чтении файла Alik-Soldier Общие вопросы C/C++ 1 31.05.2009 20:44