|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.06.2011, 20:39 | #1 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 23
|
Подсчет строк в файле в Linux.
Помню в винде писал прогу, где надо было посчитать количество строк в файле (у меня это получилось). Перешел на Linux Mint, переписал алгоритм, но в терминале при запуске выдает Segmentatin Fault. Никак не пойму в чем проблема. Помогите с этим. Скажите что не так. Лично я думаю что это изза EOF. В общем вот исходник:
#include<iostream> #include<stdio.h> using namespace std; int _n( FILE *f ) // Функция, считающая строки в файле { int k = 0; char a;// Каждый символ в файле do { a = fgetc(f); if( a == '\n') // Если символ перевода строки то k++; // На одну строку больше } while( a != EOF ); // До тех пор, пока файл не закончится return k; } int main() { int k; FILE *f = fopen("base.txt", "r"); k = _n(f) / 7; cout << k << endl; return 0; } Компилировал в IDE Geany.
Дорога в тысячу миль начинается с одного шага.
|
13.06.2011, 20:44 | #2 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Попробуй у a сделать тип int. Где-то читал что EOF не влазит в char)
Форматируйте код, будьте людьми.
|
13.06.2011, 20:47 | #3 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 23
|
Изменил. То же самое сообщение пишет.
*********************************** ********************* Заметил такую штуку - если вывести что нибудь в самом начале ( сразу после скобочки, где начинается функция main), то программа ничего не выводит, и выдает ту же ошибку. Но если я запущу другую программу, то там все нормально.
Дорога в тысячу миль начинается с одного шага.
Последний раз редактировалось Алексей Емеля; 13.06.2011 в 20:51. Причина: Добавления |
13.06.2011, 20:49 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Ммм, а файл base.txt есть рядом с программой? Добавьте проверку:
Код:
|
13.06.2011, 20:56 | #5 | |
Пользователь
Регистрация: 13.06.2011
Сообщений: 23
|
Цитата:
Мне ваш код в программу даже не пришлось вставлять - я сразу вспомнил, что полный вариант программы в другой папке, где лежит этот файл Спасибо
Дорога в тысячу миль начинается с одного шага.
|
|
13.06.2011, 21:00 | #6 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Код:
либо читай построчно (getline) а если все-таки пишешь на плюсах, то можно как то так: Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 13.06.2011 в 21:43. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Закрытие файла из OpenDialog, подсчет символов в файле | disaer | Общие вопросы C/C++ | 2 | 24.09.2010 11:10 |
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце | Shpr0T | Microsoft Office Excel | 8 | 30.08.2010 17:52 |
Подсчет строк | masterdela | Microsoft Office Excel | 2 | 13.10.2009 16:42 |
Подсчет строк в БД | nowmax | БД в Delphi | 6 | 30.03.2009 16:45 |
Подсчет русских и английских букв в текстовом файле. | Ветас | Помощь студентам | 6 | 15.01.2009 22:08 |