1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
|
||||||
1 | ||||||
Чтение из файла21.12.2013, 16:06. Показов 641. Ответов 17
Метки нет (Все метки)
В файле хранится 5 строк о каждом человеке разделенной точкой с запятой. То бишь фамилия;имя;отчество;дата_рождения;курс;пол
Когда в файл записываешь больше 5 строк, то выводит вот такую ошибку: Unhandled exception at 0x001a4d62 in Train.exe: 0xC0000005: Access violation writing location 0x00e3f3e1. Собственно это потому, что программа не может перевести буквы числа. Но проблема в том, что непонятно почему в переменной list[i].year появляется помимо возраста еще и фамилия. ЭТО ТОЛЬКО ПОТОМУ что в файле больше 5 строк. Когда в файле РОВНО 5 строк данной ошибки не возникает. В чем проблема? list[i] - это массив структур
0
|
21.12.2013, 16:06 | |
Ответы с готовыми решениями:
17
Чтение чисел из файла. Чтение после конца потока невозможно Как заменить чтение строки из консоли на чтение текстового файла? Чтение файла, чтение названия папки где находится файл, запись данных на PHP Чтение заголовка PCX файла и чтение растровых данных PCX файла |
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
|
|
21.12.2013, 16:46 [ТС] | 4 |
вообще у меня строк 7. в list[7] - стоит
в n - тоже что и в list, 7 стоит
0
|
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 121
|
||||||
21.12.2013, 17:05 [ТС] | 6 | |||||
Весь код:
Анаша;Наталья;Евгенивна;1996;1;Ж Лизун;Паша;Вальеревич;1997;2;М Глубокий;Артем;Игоревич;1997;3;М Анаша;Наталья;Евгенивна;1996;1;Ж Лизун;Паша;Вальеревич;1997;2;М Глубокий;Артем;Игоревич;1997;3;М Анаша;Наталья;Евгенивна;1996;1;Ж Лизун;Паша;Вальеревич;1997;2;М Глубокий;Артем;Игоревич;1997;3;М
0
|
21.12.2013, 18:31 | 16 |
alsav22,
не меняла. Просто сколько не запускай программу, но если там выход за пределы массива не очень большой, то ничего страшного не случится.
Кликните здесь для просмотра всего текста
C++ #include <iostream> #include <cstdio> #include <cstring> #include <ctime> using namespace std; char buf[42]; int n=7; struct stud{ char surname[12]; char name[12]; char sec_name[12]; char year[4]; }list[7]; void f_open() { FILE *file = fopen("info.txt","rt"); int i=0; while(!feof(file)) { fscanf(file,"%s\n",buf); char *point = strchr(buf,';'); strncpy(list[i].surname,buf, point-buf); list[i].surname[point-buf]=0; char *N = point + 1; point = strchr(point+1,';'); strncpy(list[i].name, N,point - N); list[i].name[point - N]=0; char *s_n = point + 1; point = strchr(point+1,';'); strncpy(list[i].sec_name, s_n,point-s_n); list[i].sec_name[point-s_n]=0; char *year = point + 1; point = strchr(point+1,';'); strncpy(list[i].year, year,point-year); list[i].year[point-year]=0; i++; } fclose(file); int age[100]; for(int i=0;i<n;i++){ sscanf(list[i].year, "%d", &age[i]); printf("%d\n", age[i]); } } int main(){ f_open(); return 0; }
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
21.12.2013, 19:40 | 18 |
При запуске из командной строки вообще ничего не выводит. При запуске из студии, результат на скрине.
0
|
21.12.2013, 19:40 | |
21.12.2013, 19:40 | |
Помогаю со студенческими работами здесь
18
Чтение бинарного файла - чтение первых 9 байт Чтение файла CSV и чтение из Table View Переделать в коде чтение из файла в чтение с клавиатуры Чтение из файла. Повторное чтение файла Внешняя сортировка бинарного файла (чтение после конца файла невозможно) Создание файла с массивом и чтение этого файла обратно используя ShareActionProvider Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |