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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2013, 16:34   #1
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию как считать каждую строку в файле?

вот наброски программы . Мне нужно прочитать файл построчно и вывести в какой строке больше всего знаков препинания .
Вложения
Тип файла: txt file234.txt (1.9 Кб, 115 просмотров)
proef вне форума Ответить с цитированием
Старый 08.06.2013, 16:39   #2
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Цитата:
if(H == NULL){
printf("file doesn't exist");
}
если произошла ошибка открытия файла, то сделать выход из программы
revizor вне форума Ответить с цитированием
Старый 08.06.2013, 16:42   #3
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

вот я сделал


Код:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <string.h>

int main(){
    setlocale(LC_ALL,"Russian");
    FILE *H  = fopen("proew.txt","r");
    if(H == NULL){
          printf("file doesn't exist");
          return 1;
          }
          int count(0);
          int i(0);
          int Count(0);
         
          char *f;
          int u[40];
          
    f = new char[5000];
    
  
    
    
     
  i=0;
             
             
              
                
    while(H){
                
               
             fscanf(H,"%c",&f[i]);
            
             if (f[i] == ' '){
                      printf(" ");
                 fscanf(H,"%c",&f[i]);     
                      
                      
                      }
                  if (f[i] == '.'|| 
                  f[i] == ',' || 
                  f[i] == '!'|| 
                  f[i]  == '?'){
                   
                   count++; 
                   
                   
                   }
             
             if (f[i] == '\n'){
                      u[i]  = count;
                     break;//ïîêà -÷òî
                   
                   
                              
                              
                              
            
                 
             
                     } 
               
                     
                      
                      
                      
                    
                    
                    printf("%c",f[i]);
                    
                    }
                    
                    
                    for (i = 0;i<count;i++){
                    printf(" \n â %i ñòðîêå %i çíàêîâ ïðåïèíàíèÿ" ,i+1,u[i]);
                    
                    }
                    getch();
                    fclose(H);
                    return 0 ;
                    }

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось proef; 08.06.2013 в 16:49.
proef вне форума Ответить с цитированием
Старый 08.06.2013, 16:50   #4
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

у меня не получается прочитать каждую строку файла
proef вне форума Ответить с цитированием
Старый 08.06.2013, 17:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я бы делал так:
Код:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <string.h>

int main(){
    setlocale(LC_ALL,"Russian");
    FILE *H  = fopen("proew.txt","r");
    if(H == NULL){
          printf("file doesn't exist");
          return 1;
          }
          int count=0,cnt=0;
          int line=0,linemax=0;
         
          char f;
    for(char c=fgetc(H);!feof(H);c=fgetc(H)){
       if(c=='.' || c==',') count++; else
        if(c=='\n'){
          linemax=(count>cnt)?(line++):linemax;
          cnt=count;
        }             
                        
    }
  
                    getch();
                    fclose(H);
                    return 0 ;
                    }
Т.е. считывал посимвольно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2013, 17:17   #6
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

что означает строка
Код:
   
linemax=(count>cnt)?(line++):linemax;
proef вне форума Ответить с цитированием
Старый 08.06.2013, 17:30   #7
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Код:
if (count>cnt)
	linemax = line++;
else
	linemax = linamex;
вроде так, если не ошибся
revizor вне форума Ответить с цитированием
Старый 08.06.2013, 17:42   #8
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

Код:
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <string.h>

int main(){
    setlocale(LC_ALL,"Russian");
    FILE *H  = fopen("proew.txt","r");
    if(H == NULL){
          printf("file doesn't exist");
          return 1;
          }
          int count=0,cnt=0;
          int line=0,linemax=0;
         
          char f;
    for(char c=fgetc(H);!feof(H);c=fgetc(H)){
       if(c=='.' || c==',') count++; else
        if(c=='\n'){
          linemax=(count>cnt)?(line++):linemax;
          cnt=count;
        }             
                        
    }
  
                    getch();
                    fclose(H);
                    return 0 ;
                    }
данный код выводит сколько всего знаков препинания , а мне нужно в какой строке наибольшее количество знаков препинания
proef вне форума Ответить с цитированием
Старый 08.06.2013, 17:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
данный код выводит сколько всего знаков препинания
count=0 забыл в if() прописать )
Цитата:
в какой строке
linemax - номер той строки.
Цитата:
если не ошибся
Да не ошибся. Вот так будет надежнее.
Код:
if (count>cnt)
	linemax = line;
line++;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2013, 17:59   #10
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

спасибо огромное)

вы не могли бы объяснить что вы здесь сделали ?
Код:
linemax=(count>cnt)?(line++):linemax;

Последний раз редактировалось proef; 08.06.2013 в 18:02.
proef вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как копировать каждую N-ую строку Rufik Microsoft Office Excel 5 28.04.2012 09:23
Как считать перенос строки в файле? QLon4ig Visual C++ 0 22.10.2011 00:57
Как считать последнюю строку ? Katmai Общие вопросы Delphi 13 27.07.2010 20:49
Как считать каждую строку с memo? Paul11j Помощь студентам 4 19.05.2009 19:30
считать поочередно каждую строчку и записать в батовский файл elplado Паскаль, Turbo Pascal, PascalABC.NET 3 16.11.2008 17:29