Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/23: Рейтинг темы: голосов - 23, средняя оценка - 5.00
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390

Как осуществить чтение файла и подсчет строк?

30.08.2009, 23:05. Показов 4778. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
видимо на форуме уже обсуждалась такая тема,но я все такие не смог найти то что мне надо,так что заранее извиняюсь за то что поворяю все...есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
  {
 
FILE *f;
f=fopen("c://test.txt","w");//название текста и режим .w-write
 
 
int a=strlen(f);
cout<<"\n"<<a<<"\n";
 
fclose(f);
      system("PAUSE");
 
  return 0;
  }
наверно все ясно уже....надо вывести сколько символов находится в строке...но при компиляции кричит на
Warning 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. d:\projects\proba\proba\proba.cpp 21 proba
Error 2 error C2664: 'strlen' : cannot convert parameter 1 from 'FILE *' to 'const char *' d:\projects\proba\proba\proba.cpp 24 proba
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2009, 23:05
Ответы с готовыми решениями:

Скажите, как можно осуществить подсчет строк в Excel?
Прилагаю файлы для разъяснения того, что мне надо.

Как осуществить чтение из текстового файла
Приветик всем, я хотела бы спросить. Вот я создала блокнот и ввела там пароль для входа в программу и бы хотела, чтобы программа спрашивала...

Как осуществить чтение текстового файла
Добрый день, я абсолютный лол в программировании, поэтому столкнулся с проблемой. Не могу вызвать чтение текстового файла, помогите с...

22
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 23:12
Про fopen компилятор просто варнинг выдал, типа правильнее юзать fopen_s. А насчет strlen почитай внимательно как она используется
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
НАЗВАНИЕ
       strlen - вычисление длины строки
 
СИНТАКСИС
       #include <string.h>
 
       size_t strlen(const char *s);
 
ОПИСАНИЕ
       Функция  strlen()  вычисляет  длину  строки s, не считая завершающий
       символ ‘\0’.
 
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       Функция strlen() возвращает количество символов в строке s
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.08.2009, 23:16  [ТС]
Gravity, спасибо...но я не понял как в моем коде юзать...
0
22 / 3 / 0
Регистрация: 21.06.2009
Сообщений: 38
30.08.2009, 23:19
Смотри мою тему ...

Про функции и файлы

там есть функция chtenie если в конце нее написать cout << i << ehdl;
то как раз выведет кол-во строк в файле только буфер надо сделать наверное побольше
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 23:20
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(void)
{
    FILE *fp;
    int c, nlines = 0;
    
    if( (fp = fopen("test", "r")) == NULL)
        return 1;
    while( (c = getc(fp)) != EOF)
        if(c == '\n')
            nlines++;
    printf("lines = %d\n", nlines);
    fclose(fp);
    return 0;
}
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.08.2009, 23:23  [ТС]
Neo-n06, не то...

Добавлено через 2 минуты
Gravity, ТЬФУ!Я снова попултал!!!!!!я хотел написать не строки а символы!
а за код большое спасибо!...пригодится.....
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 23:27
Цитата Сообщение от МедведЪ Посмотреть сообщение
я хотел написать не строки а символы!
Ну инкрементируй счетчик в цикле while без сравнения символов, еще проще.
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.08.2009, 23:30  [ТС]
Gravity, то есть так?
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *f;
f=fopen("c://test.txt","w");//название текста и режим .w-write
 
 
 
int a=0;
while(f!=EOF){
    a++;}
 
cout<<"\n"<<a<<"\n";
fclose(f);
снова что то не то....вроде правильно ?
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 23:33
Цитата Сообщение от МедведЪ Посмотреть сообщение
снова что то не то....вроде правильно ?
Блин... FILE *f - это структура, к ней нельзя применить сравнение типа "while(f!=EOF)", для чтения из файлового указателя есть функции вроде getc выше.
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.08.2009, 23:38  [ТС]
Gravity, хаха спасибо)))не знал
вроде работает ошибок нет...
теперь смотри что такое...зашел на этот файл написал афаыпфыпыавп,запусл прогу пишет 0,проверяю этот файл,а там пусто...хотя сам там написал и сохронил...что не так?
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *f;
f=fopen("c://test.txt","w");//название текста и режим .w-write
 
 
 
int a=0;
while(getc(f)!=EOF){
    a++;}
 
cout<<"\n"<<a<<"\n";
fclose(f);
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 23:40
А зачем открывать файл для записи "w", если ты собираешься из него читать?
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
30.08.2009, 23:46  [ТС]
Gravity, я в этом не разбираюсь,код взял с форума...не я написал.

Добавлено через 3 минуты
Gravity, все ))))я решил вместо w написал r))спасибо большое за поддержку)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
30.08.2009, 23:50
МедведЪ Если файл открывается с параметром "w" он либо создаётся заново, либо (если уже существует) обрезается до нулевой длинны, так, что можно уже ничего и не считать
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
/* определение длинны файла */
 
int main(int argc, char **argv){
    FILE *fp;
    long int fsize;
 
    if ( argc != 2 ){
        printf("Usage: %s <some_file>\n", argv[0]);
        return(1);
    }
    
    if ( (fp = fopen(argv[1], "rb")) == NULL ){
        printf("%s: Can't open file %s\n", argv[0], argv[1]);
        return(1);
    }
    
    fseek(fp, 0, SEEK_END);
    fsize = ftell(fp);
    fclose(fp);
    printf("Size of file %s is %d bytes\n", argv[1], fsize);
    
    return(0);
}
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
31.08.2009, 00:02  [ТС]

Не по теме:

Gravity, :friends:



Добавлено через 8 минут

Не по теме:

Gravity, :friends:


Цитата Сообщение от Gravity Посмотреть сообщение
#include <stdio.h>
int main(void)
{
FILE *fp;
int c, nlines = 0;
if( (fp = fopen("test", "r")) == NULL)
return 1;
while( (c = getc(fp)) != EOF)
if(c == '\n')
nlines++;
printf("lines = %d\n", nlines);
fclose(fp);
return 0;
}
решил дописать прогу,чтобы еще строки считала
вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FILE *f;
f=fopen("c://test.txt","r");
 
int c=0;
int l=0;
int a=0;
while(getc(f)!=EOF){
    a++;
 
}
 
 while( (c = getc(f)) != EOF)
        if(c == '\n')
            l++;
 
 
 
cout<<"\n"<<l<<"\n";
cout<<"\n"<<a<<"\n";
пишет что 0 строк
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
31.08.2009, 00:05
МедведЪ, перед тем как считать строки, делай rewind(f), чтобы сместить указатель на начало файла.
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
31.08.2009, 00:09  [ТС]
Gravity, гигантское спасибо!))))))
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
31.08.2009, 00:14
Чтобы подавить дурацкий warning нужно определить где-нибудь этот _CRT_SECURE_NO_WARNINGS.
Microsoft всех нагло заставляет использовать все эти fopen_s() функции.
Они не стандартны насколько я знаю и существуют только в Visual Studio 2005 и выше.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
31.08.2009, 00:19
А зачем два цикла делать? Оно же так в 2 раза дольше считать будет...
Кстати, если считаете символы и строки, точно \n за символ должно считаться?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
long int symbols, rows;
int c;
FILE *fp;
 
/* открыть файл, ругнуться, если неудачно */
 
symbols = 0L;
rows = 0L;
while ( (c = getc(fp)) != EOF ) {
    if ( c == '\n' )
        rows++;
    else
        symbols++
}
Ну или, если и \n за новый символ считать:
C
1
2
3
4
5
while ( (c = getc(fp)) != EOF ) {
    symbols++;
    if ( c == '\n' )
        rows++;
}
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
31.08.2009, 01:17
МедведЪ,
Цитата Сообщение от МедведЪ Посмотреть сообщение
пишет что 0 строк
а сколько у тебя в файле "c://test.txt" должно было их быть?
Цитата Сообщение от МедведЪ Посмотреть сообщение
f=fopen("c://test.txt","r");
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
31.08.2009, 01:27
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
...
while ( (c = getc(fp)) != EOF ) {
    if ( c == '\n' )
        rows++;
    else
        symbols++
}
C
1
2
    else
        symbols++;
Точку с запятой пропустил.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2009, 01:27
Помогаю со студенческими работами здесь

Бинарное дерево поиска. Как осуществить запись в файл и чтение из файла
Добрый день! Если кому не жаль своего времени окажите помощь! Необходимо осуществить запись в файл,просмотр содержимого файла, и создание...

Как осуществить построчное считывание строк из txt файла
Доброго дня. Как осуществить в windows form построчное считывание строк из txt файла? Опишу процесс... Нажимаем кнопку запуска,...

Не получается осуществить чтение из файла
Здравствуйте. У меня не получаеться осуществить чтение из файла, то есть код компилируется, но программа не открывает файл на чтение. Вот...

Осуществить чтение из типизированного файла в StringGrid
как осуществить чтение из типизированного файла в стринг грид (через динамический список), что бы можно было изменить/удалить один из...

Не удается осуществить запись и чтение файла
вот код для записи файла: JButton ButtonZapis = new JButton(&quot;\u0417\u0430\u043F\u0438\u0441\u0430\u0442\u044C&quot;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru